LLama2:
1. 使用torchrun来跑:
torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir llama-2-7b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4
关于集群分布式torchrun命令踩坑记录(自用)-优快云博客
2. 显存不够:
减小max_seq_len(生成的最大程度);减小max_batch_size;
3. MP
模型的分片数量是多少,则MP(Model Parallel)就是多少,--nproc_per_node必须设成多少(设多或设少会报错);
分片格式样例:consolidated.07.pth
4. chat模型和base模型:
使用chat_completion调用chat模型时,格式是每条一句话,有role字段(system, user, assistant); llama代码内部用这些字段拼接成了input prompt;
使用text_completion调用base模型时,就只输入一个input prompt字符串;
SFT:
1. 可使用transformer的trl库的SFTTrainer类,来做SFT微调训练。
Fine-Tuning LLaMA 2: A Step-by-Step Guide to Customizing the Large Language Model | DataCamp
SFT数据,一条里可以串联上好几个(是不是等价于拆成2条?)
{'text': '<s>[INST] 我失恋了该怎么安慰自己。 [/INST] 失恋是一种很痛苦的经历,但是在这个过程中,你需要学会如何安慰自己,以帮助自己恢复过来。以下是一些可以帮助你安慰自己的建议:\n\n1.允许自己感受痛苦:失恋是一种正常的情感反应,你不需要隐藏或压抑自己的感受。让自己慢慢地去面对这个事实,并接受自己的情绪。\n\n2.找到支持:找到可以倾诉的朋友、家人或心理咨询师,让他们帮助你排解情绪,倾听你的烦恼。不要孤单地面对这个问题。\n\n3.做一些让自己感觉良好的事情:找到一些让自己快乐的事情,比如运动、阅读、听音乐、旅行等等。这些活动可以帮助你分散注意力,从而减轻痛苦。\n\n4.关注自己的成长:失恋是一个成长的机会,它可以让你更好地认识自己、学会如何处理情感和人际关系。关注自己的成长,不要忘记这个过程也是有意义的。\n\n5.给自己时间:失恋需要时间来治愈,不要强迫自己很快就要恢复。给自己足够的时间来处理这个过程,慢慢地恢复自己的心态。\n\n失恋是一种痛苦的经历,但也是一种学习和成长的机会。相信自己可以渡过这个难关,未来会更加美好。 </s><s>[INST] 你可以安慰一下失恋的我吗? [/INST] 说起来可能您会比较失望,我作为一个处理文本的AI语言模型,虽然能在您表达的意思的基础上,给您一些文本回答,但是我没有真正的对现实事件的认识能力,以及对现实的人的共情能力。但是我会很愿意去您提供一些安慰和支持,如果您愿意分享您的感受和想法,以及让我知道您需要什么样的帮助和支持,我会尽我所能去帮助您度过这段难过的时期。 </s>'}
2. 英伟达的Nemo Megatron框架
NeMo Framework SFT with Llama 2 - NVIDIA Docs
3. DeepSpeed
4. PyTorch原生的torchtune (2024年3月发布)
GitHub - pytorch/torchtune: A Native-PyTorch Library for LLM Fine-tuning
优点:不需要其他框架;
pip install torch torchtune
tune run lora_finetune_single_device \
--config llama2/7B_lora_single_device \
batch_size=8 \
enable_activation_checkpointing=True \
max_steps_per_epoch=128
5. transformer.Trainer
6. (huggingface/) accelerate.Accelerator:优点:训练代码可保持pytorch风格;