新智元报道
编辑:编辑部
【新智元导读】才短短一周,微调 Llama 3 变体已经井喷了!去哪里微调 Llama 3?这家国产黑马早已上架了推理微调预训练教程,更夸张的是,低至 5.99 元/卡时的 H800 点击就送!
Llama 3 诞生整整一周后,直接将开源 AI 大模型推向新的高度。
Meta 官方统计显示,模型下载量已突破 120 万次,在最大开源平台 HF 上已经有 600+ 微调的 Llama 3 变体。
更值得一提的是,Llama 3 70B 指令微调版已在大模型 Chatbot Arena 排行榜上并列第一(英语),总体榜单位列第六,并在多个基准测试上的表现均大幅超过已有竞品。
可见,Llama 3 已经成为 AI 应用的最新优选。
问题来了,想要动手微调测试 Llama 3,如何用?
最新安利来了!
最近,小编无意发现潞晨云上的算力价格非常便宜,比如 H800-80GB-NVLINK 只需 5.99 元/卡时,而 4090 甚至低至 1.99 元/卡时。
与此同时,还会附赠免费的测试代金券。
一通测试下来,小编们发现不仅便宜,而且非常方便好用和功能丰富。
最关键的是,它还有配套的从推理到微调和预训练的实践教程。
体验地址在这里:https://cloud.luchentech.com/
据介绍,在 64 卡 H100 集群上,经过潞晨 Colossal-AI 优化,相比微软+英伟达方案,可提升 Llama 3 70B 的训练性能近 20%,推理性能也优于 vLLM 等方案。
不仅好用还便宜
想体验 Llama 3 等 AI 任务,还需要有 GPU 等算力支持。目前主流的 AI 云主机有 AWS、AutoDL、阿里云等。但 GPU 资源不仅昂贵稀缺,供应商普遍还要求使用者必须预先进行高额投入,按年或提前数个月预付定金。
潞晨云不仅提供了便捷易用的 AI 解决方案,还为力求为广大 AI 开发者和其他提供了随开随用的廉价算力:
价格信息统计于 2024 年 4 月 16 日,普通账号可按需按量开启的价格及可用性,大型云厂商一般仅支持老旧型号算力(Nvdia V100/P100 等)按需按量使用,美元-人民币汇率换算为1:7.2368
原价 19.99 元/卡时的H800-80GB-NVLINK,限时特供低至 5.99 元/卡时!
对于使用较稳定的长期需求,在潞晨云还可以按月、按年租用,获得进一步折扣。
潞晨云还为新用户准备了多种形式的优惠代金券活动,注册即可白嫖 H800、A800、4090、910B 等高端算力,构建属于自己的 AI 大模型!(新注册用户自动获得代金券额度)
手把手教你部署和训练 Llama 3
创建云主机
打开算力市场,按照筛选目标算力。
可以看到如图所示的控制台页面,右边是两台可用的服务器,每台上有 8 块可租用的 GPU,我们选择一个,点击「8 卡可租」按钮,进入算力市场界面。
在租用配置选择界面,为自己的云主机取一个名字并选择任务所需数量的显卡,Llama 3 8B 推理可以在单卡 H800 上完成),因此,此处选择 1 卡 H800。
推理
Colossal-Inference 现已适配支持了 Llama 3 推理加速。在潞晨云,你可以选择推理镜像,使用 Colossal-Inference 进行推理优化提速,体验 Llama 3 的自然语言生成能力。
前期准备
Llama 3 模型权重已准备好,无需额外安装步骤。
推理生成
运行生成脚本
PRETRAINED_MODEL_PATH="/root/notebook/common_data/Meta-Llama-3-8B" # huggingface or local model pathcd ColossalAI/examples/inference/colossalai run --nproc_per_node 1 llama_generation.py -m $PRETRAINED_MODEL_PATH --max_length 80进行多卡 TP 推理,如下例使用两卡生成
colossalai run --nproc_per_node 2 llama_generation.py -m $PRETRAINED_MODEL_PATH --max_length 80 --tp_size 2吞吐脚本
运行吞吐 Benchmark 测试
PRETRAINED_MODEL_PATH="/root/notebook/common_data/Meta-Llama-3-8B"git pull # update example benchmark from branch feature/colossal-infercd ColossalAI/examples/inference/python benchmark_llama3.py -m llama3-8b -b 32 -s 128 -o 256 -p $PRETRAINED_MODEL_PATH单卡 H100 对 Llama 3-8B 进行 Benchmark 结果与 vLLM 对比(例:输入序列长度 128,输出长度 256)
微调与继续预训练
潞晨云在原有 Llama 2 汉化项目中,支持了 Llama 3 的继续预训练与微调。 在这里,你可以通过选择训练镜像,快速对 Llama 3 进行继续预训练与微调。
前期准备
1. 编译安装 Colossal-AI
cd /root/ColossalAIBUILD_EXT=1 pip install .2. 创建训练需要的文件夹
mkdir /root/training_outputsmkdir /root/training_outputs/checkpointsmkdir /root/training_outputs/configsmkdir /root/training_outputs/tensorboards3. 修改 hostfile
cd /root/ColossalAI/applications/Colossal-LLaMA/cp hostfile.example hostfile注:可通过 apt install iproute2 -y 在镜像中安装 ip addr 指令查看镜像内 ip 地址
数据准备
当前路径:/root/ColossalAI/applications/Colossal-LLaMA/
1. 继续预训练
{"source": "", "target": "Lionel Andrés Messi (Spanish pronunciation: [ljoˈnel anˈdɾes ˈmesi] (i); born 24 June 1987), also known as Leo Messi, is an Argentine professional footballer who plays as a forward for and captains both Major League Soccer club Inter Miami and the Argentina national team.", "category": "sports"}{"source": "猜谜语:一身卷卷细毛,吃的青青野草,过了数九寒冬,无私献出白毛。(打一动物)", "target": "白羊", "category": "riddle"} python prepare_pretrain_dataset.py \--data_input_dirs "Directory that contains one or more JSONL file (s)>" \--tokenizer_dir "Tokenizer directory" \--data_output_dirs "Spliced tokenized output" \--max_length 8192 \--num_spliced_dataset_bins 102. 微调
{"messages": [{"from": "human", "content": "What are the three primary colors?"}, {"from": "assistant", "content": "The three primary colors are red, blue, and yellow."}]}{"messages": [{"from": "human", "content": "解释个人电脑和服务器之间的区别。"}, {"from": "assistant", "content": "个人电脑和服务器是两种不同类型的计算机系统,它们的主要区别在于用途、硬件配置和性能。个人电脑,顾名思义,是为个人使用而设计的计算机。它们通常用于日常的工作、娱乐和学习,可以运行各种各样的应用程序和游戏。个人电脑的硬件配置一般是按照标准配置来设计的,不过也可以根据个人需求进行定制。而服务器是为了满足大量用户的需求而设计的计算机系统,它们通常用于为用户提供各种网络服务,如网站、电子邮件和文件传输等。服务器通常需要高性能的硬件配置,并且可以承受高负载和长时间的运行。由于服务器需要支持大量用户的访问,它们通常配备多核处理器、大容量内存和大容量硬盘驱动器,以提高系统的运行速度和稳定性。总之,个人电脑和服务器之间的主要区别在于它们的用途、硬件配置和性能。个人电脑用于个人使用,而服务器用于支持大量用户的访问。服务器的硬件配置通常比个人电脑更高,以保证系统的性能和稳定性。"}]} python prepare_sft_dataset.py \--data_input_dirs "Directory that contains one or more JSONL file (s)>" \--tokenizer_dir "Tokenizer directory" \--data_output_dirs "Spliced tokenized output" \--max_length 8192 \--num_spliced_dataset_bins 10 \--llama_version 3运行成功后,data_output_dirs 文件夹内会自动生成 3 个子文件夹,其中,arrow 文件夹中的数据可用来直接训练。
此外,潞晨云还提供了简单数据集以供测试,处理好数据集可见:/root/notebook/common_data/tokenized-cpt-data
训练脚本
当前路径:/root/ColossalAI/applications/Colossal-LLaMA/
1. 修改 config 文件
cp train.example.sh train.sh#更新训练脚本2. 参考训练脚本
PROJECT_NAME="LLaMA-3-8B-cpt"PARENT_SAVE_DIR="/root/training_outputs/checkpoints/" # Path to a folder to save checkpointsPARENT_TENSORBOARD_DIR="/root/training_outputs/tensorboards/" # Path to a folder to save logsPARENT_CONFIG_FILE="/root/training_outputs/configs/" # Path to a folder to save training config logsPRETRAINED_MODEL_PATH="/root/notebook/common_data/Meta-Llama-3-8B" # huggingface or local model path# 以预置已处理数据集为例 declare -a dataset=(/root/notebook/common_data/tokenized-cpt-data/arrow/part-00000/root/notebook/common_data/tokenized-cpt-data/arrow/part-00001/root/notebook/common_data/tokenized-cpt-data/arrow/part-00002) TIMESTAMP=$(date +%Y-%m-%d-%H-%M-%S) FULL_PROJECT_NAME="${PROJECT_NAME}-${TIMESTAMP}"SAVE_DIR="${PARENT_SAVE_DIR}${FULL_PROJECT_NAME}"CONFIG_FILE="${PARENT_CONFIG_FILE}${FULL_PROJECT_NAME}.json"colossalai run --nproc_per_node 8 --hostfile hostfile --master_port 31312 train.py \--pretrained $PRETRAINED_MODEL_PATH \--dataset ${dataset[@]} \--plugin "zero2" \--save_interval 400 \--save_dir $SAVE_DIR \--tensorboard_dir $TENSORBOARD_DIR \--config_file $CONFIG_FILE \--num_epochs 1 \--micro_batch_size 2 \--lr 1e-4 \--mixed_precision "bf16" \--grad_clip 1.0 \--weight_decay 0.01 \--warmup_steps 100 \--use_grad_checkpoint \--use_flash_attn \其他训练详情可参考:https://github.com/hpcaitech/ColossalAI/tree/main/applications/Colossal-LLaMA
大规模训练
对于大规模预训练等场景,结合 Llama 3 序列变长、embedding 增大等特性,潞晨云针对 3D 混合并行场景进行了优化,通过自定义流水线切分、gradient checkpoint 策略,可以进一步精细化控制每个 GPU 的内存占用和速度,从而达到整体训练效率的提升。
潞晨云使用整数线性规划搜索出在 64x H100 上最适合 Llama 3 70B 的切分、gradient checkpoint 策略,最终训练可以达到每卡 410+ TFLOPS 的卓越性能。
详情可参考:https://github.com/hpcaitech/ColossalAI/tree/main/examples/language/llama
此例子附上了潞晨云测试时使用的配置。使用方法如下:
git clone https://github.com/hpcaitech/ColossalAIcd ColossalAI/examples/language/llamaBUILD_EXT=1 pip install -U git+https://github.com/hpcaitech/ColossalAIpip install -r requirements.txtexport PYTHONPATH=$(realpath ..) colossalai run --nproc_per_node 8 --hostfile HOSTFILE benchmark.py -c Meta-Llama-3-70B -x -g -p 3d --tp 4 --pp 4 --zero 1 -l 8192 --mbs 2 -b 128 --custom-ckpt欢度五一,百万福利大放送!羊毛速薅
潞晨云已准备首期百万元的代金券,后续还会不断放出,可以持续关注!
注册即送: 新账户注册即送 50 元代金券,便捷试用多种 AI 算力。
企业认证: 完成企业认证的账户可额外获得 1000 元代金券,可稳定测试多机 H800 等稀缺资源。
在线评价: 用户在社交媒体和专业论坛(如知乎、小红书、微博、CSDN 等)上分享使用体验,有效分享一次可得 100 元代金券。每月最佳分享可额外再获 500 元代金券(根据点赞、评论等真实活跃度;每个账号最多每月各计一次;发布 24 小时后请找小客服核对验证)
加入用户群: 不定时发放特价资源、代金券等优惠活动。
参考资料: