LLAMA2 모델에 대한 라이센스는 변경되었으며 상업적으로 이용 가능했습니다. 모델이 시작되면 LLAMA2-Chat도 출시되었습니다. 나는 16G 추론 카드 (https://zhuanlan.zhihu.com/p/645152512에서 llama-2-7b-chat의 미세 조정을 연습했습니다. 그러나 중국 어휘 목록이 확장 되더라도 추론 효과는 여전히 좋지 않으며 답은 주로 영어로되어 있습니다.
LLAMA2 모델이 발표되었을 때, 공식 미세 조정 프로그램은 LLAMA Companion (https://github.com/facebookresearch/llama-recipes)이라는 공식 미세 조정 프로그램이 열렸으며, 이는 본격적인, LORA 및 기타 방법의 미세 조정을 지원하며, 3 자 프로그램보다 상대적으로 더 호환됩니다.
이 기사는 LLAMA-Recipes, 적응 형 그래픽 카드 리소스를 수정하고 LORA를 기반으로 원래 LLAMA2-7B 모델을 미세 조정하는 것을 기반으로합니다. 결과는 합리적인 추론입니다. 이 프로젝트는 또한 테스트 프로세스 및 스트리밍 인터페이스를 제공합니다.
16g 이상, 두 개 이상의 조각을 갖는 것이 가장 좋습니다.
2 개의 P100 (16g)에서 100m 이상의 코퍼스 라운드를 미세 조정하는 데 120 시간이 걸립니다. 따라서 V100, 4090 및 기타 추론 카드를 사용하여 미세 조정하는 것이 좋습니다.
git clone https://github.com/git-cloner/Llama2-chinese
cd Llama2-chineseconda create -n llama-recipes python=3.9 -y
conda activate llama-recipes
# 因为requirements中有从github中安装的依赖,网络环境不佳,打开这两个参数可以观察进度
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1
pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-host=pypi.mirrors.ustc.edu.cn
# 问题比较多的是bitsandbytes,pip install后用以下命令验证
python -m bitsandbytes # 用本项目开发的下载器下载模型,可以断点续传和重连
python model_download.py --repo_id NousResearch/Llama-2-7b-hf
# 下载后的模型在 ./modelsNousResearchLlama-2-7b-hf 下코퍼스는 Alpaca 형식입니다 (Huggingface.co의 Alpaca Corpus는 매우 크며 직접 분류 할 수 있습니다). 개인화 후, FT_DATASETS/ALPACA_DATA.JSON
# kill process force
pkill -9 -f llama_finetuning
# train,batch_size_training可按显存大小反复试,尽量把显存占满
# 本例是用两块P100,分别是第1、2块
# !注意如果用两块卡,nproc_per_node是1,不是2
CUDA_VISIBLE_DEVICES=1,2 nohup torchrun --nnodes 1 --nproc_per_node 1
llama_finetuning.py
--use_peft
--peft_method lora
--model_name ./models/NousResearch/Llama-2-7b-hf
--use_fp16
--output_dir output/model
--dataset alpaca_dataset
--batch_size_training 40
--num_epochs 3
--quantization > train.log 2>&1 &
# check log
tail -f train.log미세 조정이 끝나면 PEFT 증분 모델이 생성됩니다. 출력/모델에서 다음 명령을 사용하여 클라이언트에서 대화식으로 테스트하십시오. 스트림 모드는 사용되지 않으므로 결과는 한 번에 생성 한 후에 만 볼 수 있으므로 속도는 느립니다.
CUDA_VISIBLE_DEVICES=0 python generate.py
--base_model ' ./models/NousResearch/Llama-2-7b-hf '
--lora_weights ' ./output/model '
--load_8bit # 可以用4bit或8bit量化方式或半精度装入模型测试
# --load_4bit 需要约6G显存
# --load_8bit 需要9G显存
# 半精度 需要13G显存
CUDA_VISIBLE_DEVICES=0 nohup python -u api_stream.py
--load_4bit > api_stream.log 2>&1 &
tail -f api_stream.log # 多次发POST请求,直到返回的response中包含[stop]后停止调用
curl -X POST " http://127.0.0.1:8000/stream "
-H ' Content-Type: application/json '
-d ' {"prompt": "你好", "history": []} ' python inference/hf-text-generation-inference/merge_lora_weights.py
--base_model ./models/NousResearch/Llama-2-7b-hf
--peft_model output/model
--output_dir output/merged_model_output