2023년에는 챗봇 분야에 'OpenAI의 ChatGPT'와 '기타' 두 진영만 남을 것 같습니다.
ChatGPT는 강력하지만 OpenAI가 이를 오픈 소스로 만드는 것은 거의 불가능합니다. '다른' 진영의 성과는 저조했지만, 얼마 전 Meta에서 오픈소스로 공개했던 LLaMA와 같은 오픈소스 작업에 많은 사람들이 참여하고 있습니다.
LLaMA는 매개변수 양이 70억에서 650억개에 이르는 일련의 모델에 대한 일반적인 이름입니다. 그 중 130억 개의 매개변수 LLaMA 모델은 "대부분의 벤치마크에서" 1,750억 개의 매개변수로 GPT-3보다 성능이 뛰어납니다. 하지만 모델이 명령어 튜닝(instruction tune)을 거치지 않아 생성 효과가 좋지 않다.
모델 성능을 향상시키기 위해 스탠포드 연구진은 명령어 미세 조정 작업을 완료하고 Alpaca(LLaMA 7B 기반)라는 새로운 70억 매개변수 모델을 훈련했습니다. 구체적으로 그들은 OpenAI의 text-davinci-003 모델에 Alpaca에 대한 훈련 데이터로서 자가 지시 방식으로 52K 지시 따르기 샘플을 생성하도록 요청했습니다. 실험 결과 알파카의 많은 행동이 text-davinci-003과 유사한 것으로 나타났습니다. 즉, 매개변수가 7B개에 불과한 경량 모델 Alpaca의 성능은 GPT-3.5와 같은 초대형 언어 모델의 성능과 비슷합니다.
일반 연구자의 경우 이는 실현 가능하고 저렴한 미세 조정 방법이지만 여전히 많은 양의 계산이 필요합니다(저자는 80GB A100 8대에서 3시간 동안 미세 조정했다고 합니다). 게다가 알파카의 시드 작업은 모두 영어로 되어 있고, 수집된 데이터도 영어로 되어 있어 훈련된 모델이 중국어에 최적화되어 있지 않습니다.
미세 조정 비용을 더욱 줄이기 위해 스탠포드의 또 다른 연구원인 Eric J. Wang은 LoRA(low-rank Adaptation) 기술을 사용하여 알파카의 결과를 재현했습니다. 특히 Eric J. Wang은 RTX 4090 그래픽 카드를 사용하여 Alpaca와 동등한 모델을 단 5시간 만에 훈련시켜 해당 모델의 컴퓨팅 성능 요구 사항을 소비자 수준으로 줄였습니다. 또한 이 모델은 연구용으로 Raspberry Pi에서 실행할 수 있습니다.
LoRA의 기술적 원리. LoRA의 아이디어는 원래 PLM 옆에 우회를 추가하고 차원 축소를 수행한 다음 차원 작업을 수행하여 소위 고유 순위를 시뮬레이션하는 것입니다. 학습 중에는 PLM의 매개변수가 고정되어 있으며 차원 축소 행렬 A와 차원 향상 행렬 B만 학습됩니다. 모델의 입력 및 출력 치수는 변경되지 않고 그대로 유지되며 출력 중에 BA 및 PLM의 매개변수가 중첩됩니다. 무작위 가우스 분포로 A를 초기화하고 0 행렬로 B를 초기화하여 훈련 시작 시 우회 행렬이 여전히 0 행렬인지 확인합니다(인용: https://finisky.github.io/lora/). LoRA의 가장 큰 장점은 더 빠르고 더 적은 메모리를 사용하므로 소비자급 하드웨어에서 실행할 수 있다는 것입니다.
Eric J. Wang이 게시한 알파카-LoRA 프로젝트.
프로젝트 주소: https://github.com/tloen/alpaca-lora
자신만의 ChatGPT 유사 모델(중국어 버전의 ChatGPT 포함)을 훈련시키고 싶지만 훈련을 하지 않는 분들을 위해 최고 수준의 컴퓨팅 리소스를 보유하고 있다는 사실은 의심할 여지 없이 놀라운 일입니다. 따라서 알파카-LoRA 프로젝트 등장 이후에도 프로젝트를 중심으로 한 튜토리얼과 훈련 결과가 계속해서 등장했는데, 본 글에서는 그 중 몇 가지를 소개하겠다.
Alpaca-LoRA 프로젝트에서 저자는 미세 조정을 저렴하고 효율적으로 수행하기 위해 Hugging Face의 PEFT를 사용했다고 언급했습니다. PEFT는 다양한 Transformer 기반 언어 모델을 가져와 LoRA를 사용하여 미세 조정할 수 있는 라이브러리(LoRA는 지원되는 기술 중 하나)입니다. 이점은 더 작은(아마도 구성 가능한) 출력을 사용하여 적당한 하드웨어에서 모델을 저렴하고 효율적으로 미세 조정할 수 있다는 것입니다.
최근 블로그에서 여러 연구자들이 Alpaca-LoRA를 사용하여 LLaMA를 미세 조정하는 방법을 소개했습니다.
Alpaca-LoRA를 사용하기 전에 몇 가지 전제조건이 필요합니다. 첫 번째는 GPU 선택입니다. LoRA 덕분에 이제 NVIDIA T4 또는 4090 소비자 GPU와 같은 저사양 GPU에서 미세 조정을 완료할 수 있습니다. 또한 해당 가중치가 공개되지 않기 때문에 LLaMA 가중치도 신청해야 합니다.
이제 전제 조건이 충족되었으므로 다음 단계는 Alpaca-LoRA를 사용하는 방법입니다. 먼저 Alpaca-LoRA 저장소를 복제해야 하며 코드는 다음과 같습니다.
git clone https://github.com/daanelson/alpaca-lora cd alpaca-lora
두 번째, LLaMA 가중치를 가져옵니다. 다운로드한 가중치 값을 unconverted-weights 폴더에 저장합니다. 폴더 계층 구조는 다음과 같습니다.
unconverted-weights ├── 7B │ ├── checklist.chk │ ├── consolidated.00.pth │ └── params.json ├── tokenizer.model └── tokenizer_checklist.chk
가중치가 저장된 후 다음 명령을 사용하여 PyTorch 체크포인트 가중치를 변환기 호환 형식으로 변환합니다. :
cog run python -m transformers.models.llama.convert_llama_weights_to_hf --input_dir unconverted-weights --model_size 7B --output_dir weights
최종 디렉토리 구조는 다음과 같아야 합니다:
weights ├── llama-7b └── tokenizermdki
위의 두 단계를 처리한 후 세 번째 단계로 와서 Cog를 설치합니다.
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)" sudo chmod +x /usr/local/bin/cog
네 번째 단계는 기본적으로 Finetune 스크립트에 구성된 GPU는 덜 강력하지만, 더 강력한 GPU가 있는 경우 Finetune.py에서 MICRO_BATCH_SIZE를 32 또는 64로 늘릴 수 있습니다. 또한 데이터세트를 조정하라는 지시문이 있는 경우 Finetune.py의 DATA_PATH를 편집하여 자신의 데이터세트를 가리키도록 할 수 있습니다. 이 작업을 수행하면 데이터 형식이 alpaca_data_cleaned.json과 동일해야 합니다. 다음으로 미세 조정 스크립트를 실행합니다.
cog run python finetune.py
미세 조정 프로세스는 40GB A100 GPU에서 3.5시간이 걸렸고, 성능이 낮은 GPU에서는 더 많은 시간이 걸렸습니다.
마지막 단계는 Cog를 사용하여 모델을 실행하는 것입니다.
$ cog predict -i prompt="Tell me something about alpacas." Alpacas are domesticated animals from South America. They are closely related to llamas and guanacos and have a long, dense, woolly fleece that is used to make textiles. They are herd animals and live in small groups in the Andes mountains. They have a wide variety of sounds, including whistles, snorts, and barks. They are intelligent and social animals and can be trained to perform certain tasks.
튜토리얼 작성자는 위 단계를 완료한 후 다음을 포함하되 이에 국한되지 않는 다양한 게임플레이를 계속 시도할 수 있다고 말했습니다.
Alpaca의 성능은 GPT 3.5와 비슷하지만 시드 작업이 모두 영어로 되어 있고 수집된 데이터도 영어로 되어 있어 훈련된 모델이 중국어에 친화적이지 않습니다. 중국어 대화 모델의 효율성을 높이기 위해 더 나은 프로젝트를 살펴보겠습니다.
첫 번째는 중국 중부 사범 대학 및 기타 기관의 개인 개발자 3명이 만든 오픈 소스 중국어 모델 Luotuo(Luotuo)입니다. 이 프로젝트는 LLaMA, Stanford Alpaca, Alpaca LoRA, Japanese-Alpaca-LoRA 등을 기반으로 합니다. ., 하나의 카드로 교육 배포를 완료할 수 있습니다. 흥미롭게도 그들은 LLaMA(라마)와 알파카(알파카)가 모두 Artiodactyla(낙타과)목에 속하기 때문에 모델 이름을 낙타라고 명명했습니다. 그런 관점에서 보면 이 이름도 기대된다.
이 모델은 Meta의 오픈 소스 LLaMA를 기반으로 하며 Alpaca와 Alpaca-LoRA 두 프로젝트를 참조하여 중국어 교육을 받았습니다.
프로젝트 주소: https://github.com/LC1332/China-alpaca-lora
현재 이 프로젝트는 luotuo-lora-7b-0.1 및 luotuo-lora-라는 두 가지 모델을 출시했습니다. 7b -0.3, 계획에 다른 모델이 있습니다:
다음은 효과 표시입니다:
그러나 luotuo-lora-7b-0.1 (0.1), luotuo- lora-7b -0.3 (0.3) 사용자가 Central China Normal University의 주소를 물었을 때 0.1이 잘못 대답했습니다:
간단한 대화 외에도 보험 관련 분야에서 모델 최적화를 수행한 사람들도 있습니다. 이 트위터 사용자에 따르면 알파카-LoRA 프로젝트의 도움으로 중국 보험 질문과 답변 데이터를 입력했는데 최종 결과가 좋았다고 한다.
구체적으로 저자는 3K 이상의 중국어 문답 보험 코퍼스를 사용하여 중국어 버전의 Alpaca LoRa를 훈련시켰습니다. 구현 프로세스는 LoRa 방법을 사용하고 Alpaca 7B 모델을 미세 조정했으며, 그 결과는 240분이었습니다. 최종 손실은 0.87입니다.
사진 출처 : https://twitter.com/nash_su/status/1639273900222586882
다음은 훈련 과정과 결과입니다.
테스트 결과는 다음과 같습니다. 1. 훈련 코퍼스와 관련된 콘텐츠는 대략적이고 합리적으로 답변할 수 있지만, 말도 안되는 내용으로 제한됩니다. 2. 코퍼스와 관련되지 않은 콘텐츠는 특정 코퍼스의 데이터에 대해 강제로 답변합니다. 3. 논리적 추론 수학적 계산에는 이러한 기능이 없습니다.
이 결과를 본 네티즌들은 일자리를 잃을 것이라고 소리쳤습니다.
마지막으로 더 많은 중국어 대화 모델이 추가되기를 기대합니다.
위 내용은 ChatGPT의 중국어 버전을 훈련하는 것은 그리 어렵지 않습니다. A100 없이 오픈 소스 Alpaca-LoRA+RTX 4090을 사용하여 훈련할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!