우리는 Flan 컬렉션에서 Vicuna-13B를 미세 조정하여 Flacuna를 개발했습니다. Flacuna는 문제 해결시 Vicuna보다 낫습니다. 여기에서 모델에 액세스하십시오 https://huggingface.co/declare-lab/flacuna-13b-v1.0.
FLAN-T5 는 또한 텍스트-아우 디오 생성에도 유용합니다. 관심이 있으시면 https://github.com/declare-lab/tango에서 작업을 찾으십시오.
이 저장소에는 Stanford Alpaca 합성 명령어 튜닝을 FLAN-T5와 같은 기존 명령 조정 모델로 확장하기위한 코드가 포함되어 있습니다. Joao Gante 덕분에 라이브 대화식 데모가 있습니다! 우리는 또한 Declare-Lab/Flan-Eval에서 많은 교육 조정 모델을 벤치마킹하고 있습니다. 우리의 사전 제한 모델은 Huggingface에서 완전히 사용할 수 있습니까? :
| 모델 | 매개 변수 | 지시 데이터 | GPU 훈련 |
|---|---|---|---|
| 플란-알파카-베이스 | 220m | 플란, 알파카 | 1X A6000 |
| Flan-Alpaca-Large | 770m | 플란, 알파카 | 1X A6000 |
| Flan-Alpaca-xl | 3B | 플란, 알파카 | 1X A6000 |
| flan-alpaca-xxl | 11b | 플란, 알파카 | 4X A6000 (FSDP) |
| flan-gpt4all-xl | 3B | Flan, gpt4all | 1X A6000 |
| Flan-Sharegpt-XL | 3B | flan, sharegpt/vicuna | 1X A6000 |
| flan-alpaca-gpt4-xl* | 3B | Flan, GPT4-Alpaca | 1X A6000 |
*더 나은 성능을 위해 권장됩니다
Alpaca는 Chatgpt와 같은 대형 언어 모델 (LLM)의 성능을 근사화하는 흥미 진진한 새로운 방향을 나타냅니다. 구체적으로, 그들은 GPT-3과 같은 LLM을 활용하여 합성 훈련 데이터와 같은 지침을 생성합니다. 그런 다음 50K 이상의 작업을 다루는 합성 데이터를 사용하여 더 작은 모델을 미세 조합 할 수 있습니다. 그러나 기본 LLAMA 모델의 라이센스 제약으로 인해 원래 구현이 덜 액세스 할 수 없습니다. 또한 사용자는 합성 데이터 세트에서 잠재적 노이즈를 기록했습니다. 따라서 FLAN-T5와 같은 고품질 (그러나 덜 다양한) 지침에 대해 이미 교육을받은 완벽하게 접근 가능한 모델을 탐색하는 것이 좋습니다.
from transformers import pipeline
prompt = "Write an email about an alpaca that likes flan"
model = pipeline(model="declare-lab/flan-alpaca-gpt4-xl")
model(prompt, max_length=128, do_sample=True)
# Dear AlpacaFriend,
# My name is Alpaca and I'm 10 years old.
# I'm excited to announce that I'm a big fan of flan!
# We like to eat it as a snack and I believe that it can help with our overall growth.
# I'd love to hear your feedback on this idea.
# Have a great day!
# Best, AL Paca
종속성을 설치하고 데이터를 다운로드하십시오. 우리는 Alpaca-Lora의 청소 데이터를 훈련에 사용했습니다.
conda create -n paca python=3.8 -y
conda activate paca
pip install -r requirements.txt
mkdir -p data
wget https://github.com/declare-lab/flan-alpaca/releases/download/v0.1.0/alpaca_data.json -O data/alpaca.json
wget https://github.com/declare-lab/flan-alpaca/releases/download/v0.1.0/alpaca_data_cleaned.json -O data/alpaca_clean.json
wget https://github.com/declare-lab/flan-alpaca/releases/download/v0.1.0/alpaca_gpt4_data.json -O data/alpaca_gpt4.json
전처리 청소 알파카 훈련 데이터 세트 :
python data_loading.py preprocess_alpaca
--path_in data/alpaca_gpt4.json
--path_out data/train.json
gpt4all 데이터를 사용하려면이 명령을 사용할 수 있습니다.
python data_loading.py preprocess_gpt4all --path_out data/train.json
shareGpt 데이터를 사용하려면이 명령을 사용할 수 있습니다.
wget https://github.com/declare-lab/flan-alpaca/releases/download/v0.1.0/ShareGPT_unfiltered_cleaned_split.json -O data/sharegpt.json
python data_loading.py preprocess_sharegpt --path_out data/train.json
다음 명령은 FLAN-T5-XL (단일 A6000 GPU에서 8 시간)을 정합합니다.
python training.py --output_dir outputs/model/xl
--use_compile
--train_epochs 3
--max_source_length 64
--max_target_length 512
--data_path data/train.json
--model_name_or_path "google/flan-t5-xl"
--train_batch_size 1
--gradient_accumulation_steps 64
모델이 메모리에 맞지 않고 여러 GPU가있는 경우 --use_fsdp 로 --use_compile 교체하여 완전 셰드 데이터를 병렬로 시도 할 수 있습니다.
python inference.py test_model
--path "outputs/model/xl/epoch=2-step=2439.ckpt"
--prompt "Write an email about an alpaca that likes flan"
declare-lab/flan-alpaca-xl 원하는 Huggingface Repo로 교체하십시오.
huggingface-cli login
python inference.py export_to_hub
--path "outputs/model/xl/epoch=2-step=2439.ckpt"
--repo declare-lab/flan-alpaca-xl