La licence du modèle LLAMA2 a changé et a été disponible dans le commerce. Lorsque le modèle a été lancé, LLAMA2-CHAT a également été lancé. J'ai pratiqué le tun fin du lama-2-7b-chat sur la carte de raisonnement 16G (https://zhuanlan.zhihu.com/p/645152512, le code est https://github.com/git-cloner/llama2-lora-fining). Cependant, même si la liste de vocabulaire chinois est élargie, l'effet de raisonnement n'est toujours pas bon et les réponses sont principalement en anglais.
Lorsque le modèle LLAMA2 a été publié, le programme officiel de réglage fin a été ouvert, intitulé Llama Companion (https://github.com/facebookresearch/llama-recipes), qui prend en charge le réglage fin des programmes à grande échelle, LORA et d'autres méthodes, et est relativement plus compatible que les programmes de tiers.
Cet article est basé sur LLAMA-RECIPES, modifiant les ressources de carte graphique adaptative et affligeant le modèle LLAMA2-7B d'origine basé sur LORA. Le résultat est une inférence raisonnable. Ce projet fournit également un processus de test et une interface de streaming.
16g ou plus, il est préférable d'avoir plus de deux pièces.
Il faut 120 heures pour affiner un tour de plus de 100 m de corpus sur deux P100 (16g). Par conséquent, il est recommandé d'utiliser V100, 4090 et d'autres cartes de raisonnement pour affiner.
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 下Le corpus est au format alpaca (le corpus alpaca dans HuggingFace.co est très grand et peut être réglé par vous-même). Après la personnalisation, il est nommé: 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.logAprès une série de réglages fins, un modèle incrémentiel PEFT sera généré. Sous la sortie / modèle, utilisez la commande suivante pour la tester de manière interactive sur le client. Étant donné que le mode Stream n'est pas utilisé, les résultats ne peuvent être vus qu'après l'avoir généré en même temps, donc la vitesse est lente.
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