대규모 언어 모델 (LLMS)은 요즘 점점 더 많은 관심을 받고 있지만, 제로/소수의 학습 능력이 종종 평가되고, Bert와 같은 기존의 미리 훈련 된 모델과 같은 텍스트 분류를 미세 조정하는 데 사용되지 않는다고 생각합니다. 따라서 LLM에서 가능한 텍스트 분류의 양을 찾기 위해 BERT를 사용한 텍스트 분류와 동일한 방법을 사용하여 LLM을 사용하여 LLM을 사용하여 실험을 수행했습니다.
이 실험의 목적은 제로/소수의 학습 능력에 종종 관심을 끌고있는 LLM이 일반 텍스트 분류에 사용될 때 어떤 일이 발생하는지 조사하는 것입니다.
지금까지 텍스트 분류에 일반적으로 사용 된 Bert는 양방향 모델이며 텍스트 분류를 위해 문장 토큰 [CLS] 자주 사용했습니다. 그러나 LLAMA와 같이 요즘 일반적으로 사용되는 LLM은 단방향 모델입니다. 따라서 단방향 모델에서는 문장 토큰을 취할 필요가 없습니다. 따라서이 구현에서 우리는 transformers 의 LlamaForSequenceClassification 클래스를 참조로 사용하여 텍스트 분류를 위해 문장-목록 토큰의 임베디드 표현을 사용합니다. 단방향 언어 모델에서, 종료 종료 토큰은 시리즈의 전체 문의 토큰으로 만 간주 될 수 있으므로 [CLS] 에 대한 적절한 대안으로 간주됩니다.
또한 LLM의 전체 미세 조정은 메모리 및 계산 효율 관점에서 매우 어렵 기 때문에 추가 저격수 매트릭스 만 조정하여 완전 미세 조정과 비교할 수있는 성능을 달성 할 수있는 미세 조정 기술인 LORA를 사용합니다. 참고 : PEFT는 LORA 설명 자료로 미세 조정에 사용됩니다.
평가 실험에서 우리는 Livedoor News Corpus의 9 가지 값을 분류 할 것입니다. 실험 내용은 Bert를 사용한 저자의 텍스트 분류 자습서와 거의 동일합니다.
평가 실험에서 7 가지 유형의 일본 LLM이 사용되었습니다. 구체적으로, 우리는 4 개의 Rinna 3.6B 모델과 사이버 가건 7B, 3B 및 1B 모델에 대한 실험을 수행했습니다.
하이퍼 파라미터를 조정하는 방법으로, 학습 속도를 1E-4, 3E-4, 5E-4 및 1E-3으로 설정 한 실험을 수행했습니다. 또한 모델에 대한 세 가지 유형의 입력 형식을 실험했습니다. 구체적으로, Livedoor News Corpus의 각 기사에 대해 제목은 title 과 기사 body 이라는 변수에 저장되어 다음 3 개의 템플릿에 주입되었습니다.
| 템플릿 유형 | 모습 |
|---|---|
| 0 | f "제목 : {title} n body : {body} nlabel :" |
| 1 | f "제목 : {title} n body : {body}" |
| 2 | f "{title} n {body}" |
우리는 위에서 언급 한 학습 속도 및 템플릿의 모든 조합에 대해 하나씩 실험을 수행했으며 최종 테스트 세트에서 평가를 위해 개발 세트에서 가장 높은 매크로 평균 F 값을 가진 과당 파라미터를 사용했습니다. Lora의 순위 R은 32로 고정됩니다.
실험은 단일 임의의 숫자 종자 값으로 한 번만 수행되며 분할 교차 검증이 수행되지 않기 때문에 실험 결과는 정확하지 않습니다. 따라서 아래 결과를 지나치게 신뢰하지 말고 참조로만 살펴보십시오.
결과는 아래 표에 나와 있습니다. 실험 결과는 거시 평균 F 값에 대한 하강 순서로 배열됩니다. 모든 후속 결과는 results 디렉토리에 저장된 CSV 파일에서 볼 수 있습니다.
| 정확성 | 정도 | 상기하다 | F1 | |
|---|---|---|---|---|
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-SFT-V2 | 97.96 | 97.77 | 97.76 | 97.75 |
| Rinna/Japanese-Gpt-Neox-3.6b | 97.55 | 97.24 | 97.39 | 97.30 |
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-Sft | 97.55 | 97.32 | 97.27 | 97.27 |
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-PPO | 97.55 | 97.03 | 97.37 | 97.18 |
| Cyberagent/Open-Calm-7b | 97.01 | 96.76 | 96.42 | 96.55 |
| Cyberagent/Open-Calm-3B | 96.88 | 96.38 | 96.51 | 96.42 |
| Cyberagent/Open-Calm-1B | 94.43 | 94.24 | 93.80 | 93.98 |
테이블에서, 우리는 지침이 rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 가장 높은 F 값을 보여 주었음을 알 수 있습니다. 반면, 7B에서 비교적 큰 모델 인 cyberagent/open-calm-7b 는 F 값이 약간 낮습니다. 성능을 향상 시키려면 Rola의 R 및 기타 높은 파라와 같이 성능을 조금 더 조정해야 할 수도 있습니다.
또한 rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 의 F 값은 97.75 로, 이는 studio-ousia/luke-japanese-large-lite 의 F 값보다 높으며 97.47 사용하여 텍스트 분류 자습서에서 가장 높은 성능을 달성했습니다. 물론, 모델의 매개 변수 수는 약 9 배나 다르므로 간단한 비교가 될 수는 없지만 텍스트 분류 성능을 추구하려면 LLM+LORA를 BERT의 대안으로 사용하는 것이 좋은 옵션 일 수 있습니다.
다음으로,이 실험에서 세 가지 대표 모델에 대한 rinna/japanese-gpt-neox-3.6b 템플릿 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 아래 표에 나와 있습니다.
| 주형 | 발 F1 | F1 | |
|---|---|---|---|
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-SFT-V2 | 2 | 97.27 | 97.75 |
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-SFT-V2 | 1 | 97.18 | 97.14 |
| Rinna/Japanese-Gpt-Neox-3.6B-Instruction-SFT-V2 | 0 | 97.05 | 96.80 |
| Rinna/Japanese-Gpt-Neox-3.6b | 1 | 97.14 | 97.30 |
| Rinna/Japanese-Gpt-Neox-3.6b | 2 | 96.92 | 97.36 |
| Rinna/Japanese-Gpt-Neox-3.6b | 0 | 96.61 | 96.69 |
| Cyberagent/Open-Calm-7b | 1 | 97.22 | 96.55 |
| Cyberagent/Open-Calm-7b | 0 | 97.07 | 96.56 |
| Cyberagent/Open-Calm-7b | 2 | 96.88 | 96.85 |
일반적으로 LLM의 추론 능력은 템플릿 (프롬프트)에 의해 크게 영향을받습니다. 반면에,이 실험은 제로/소수의 샷과 같은 설정이 아니기 때문에 템플릿으로 인한 성능 차이가 어느 정도 감소 될 수있을 것으로 예상됩니다. 그러나 결과는 템플릿이 이전에 F 값 (F 값의 약 1 점)에서 특정 차이를 생성했음을 보여줍니다. template_type=0 은 비교적 복잡한 템플릿이며, template_type=2 단순히 라인 브레이크와 연결되는 간단한 템플릿이지만 간단한 template_type=2 더 나은 성능을 갖는 경향이 있음을 알 수 있습니다. 프롬프트는 제로/소수의 설정에서 매우 중요하지만 미세 튜닝을 할 수 있다면 프롬프트를 가능한 한 간단하게 유지하는 것이 좋습니다.
다음으로 모델이 rinna/japanese-gpt-neox-3.6b 에 고정되고 template_type 가 2 에 고정 될 때 각 학습 속도의 성능을 살펴 보겠습니다.
| LR | 발 F1 | 정확성 | 정도 | 상기하다 | F1 |
|---|---|---|---|---|---|
| 5E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5E-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3E-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5E-4 | 96.77 | 98.23 | 98.02 | 97.87 | 97.93 |
| 3E-4 | 96.74 | 96.88 | 96.46 | 96.21 | 96.30 |
| 1E-4 | 94.79 | 97.01 | 96.85 | 96.72 | 96.76 |
| 5E-5 | 94.28 | 95.92 | 95.73 | 95.50 | 95.58 |
| 3E-5 | 93.74 | 94.02 | 93.50 | 93.61 | 93.55 |
| 1E-5 | 78.94 | 81.25 | 80.21 | 79.43 | 79.62 |
테이블에서, 상당히 큰 학습 속도는 LORA와의 학습에 효과적이지만 상한은 1e-3 정도이며, 1e-2 와 같은 매우 큰 학습 속도를 사용하면 학습이 제대로 진행되지 않는다는 것을 알 수 있습니다. 보다 광범위한 모델에서 실험 결과를보고 싶지만 LLM+LORA를 사용하여 분류 할 때 첫 번째 움직임으로 약 5e-4 의 학습 속도를 시도하는 것이 좋습니다.
또한 모델이 rinna/japanese-gpt-neox-3.6b , template_type 2 에 고정되고 Lora의 r 32 에 고정 될 때 각 배치 크기의 성능 차이를 살펴 보겠습니다.
| 배치 크기 | LR | 발 F1 | 정확성 | 정도 | 상기하다 | F1 |
|---|---|---|---|---|---|---|
| 2 | 5E-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1E-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97.52 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5E-4 | 96.57 | 97.55 | 97.39 | 97.35 | 97.35 |
| 4 | 5E-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3E-4 | 97.20 | 97.28 | 96.99 | 96.87 | 96.91 |
이 테이블은 f 값을 위해 내림차순으로 정렬됩니다. 결과적으로, 배치 크기에 따라 성능 차이가 어느 정도 생성 될 가능성이있을 수 있지만,이 실험에서는 실험은 임의의 숫자 종자 값 하나만 한 번만 수행되었으므로 명확한 결론에 도달하기가 어려워 보입니다. 일반적으로 배치 크기는 더 오래 훈련하는 데 시간이 오래 걸리고 성능이 불안정하므로 현재는 배치 크기를 약 16 또는 32로 설정하는 것이 좋습니다.
마지막으로, 모델이 rinna/japanese-gpt-neox-3.6b 에 고정되고 template_type 가 2 에 고정 될 때 R 당 로라의 성능을 살펴 보겠습니다.
| 로라 r | LR | 발 F1 | 정확성 | 정도 | 상기하다 | F1 |
|---|---|---|---|---|---|---|
| 8 | 5E-4 | 97.45 | 97.15 | 96.97 | 96.75 | 96.83 |
| 64 | 1E-3 | 97.22 | 97.28 | 96.96 | 96.85 | 96.89 |
| 16 | 1E-3 | 97.20 | 97.69 | 97.59 | 97.27 | 97.38 |
| 4 | 3E-4 | 97.12 | 97.69 | 97.64 | 97.24 | 97.40 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
결과적으로 개발 세트의 F 값과 테스트 세트의 F 값 사이에 많은 상관 관계가 없다고 생각합니다. Lora의 R의 값은 "모델이 클수록 값이 작을수록"라고 생각되므로 B의 중간 크기의 LLM의 경우 32 이상으로 설정하는 것이 더 안전하다고 생각하지만 조금 더 실험을 시도하고 싶습니다.
이 구현에서는 전통적인 텍스트 분류를 위해 LLM을 사용하여 실험을 수행했습니다. 결과적으로 LORA를 사용하여 미세 조정함으로써 적은 수의 매개 변수를 간단히 조정하여 상당히 높은 성능을 달성 할 수 있으며 "BERT의 대안으로 LLM을 사용하는 것"도 합리적인 옵션으로 간주 될 수 있습니다. 또한 미세 튜닝을 설정할 때에도 템플릿이 성능에 여전히 영향을 미치는 경향이있었습니다. 또한 LORA를 사용하여 미세 조정을 할 때 학습 속도는 상당히 큰 값으로 설정되어야하며 Rank r 의 값이 성능에도 영향을 줄 수 있음이 밝혀졌습니다.
저자 : 하야토 츠카 고시
이메일 : [email protected]
이 구현을 용지 등으로 언급하려면 다음을 사용하십시오.
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}