如何训练自己的ChatGPT:新手入门完整指南
LLM 这两周带来的震撼和惊喜,确实让人应接不暇。GPT-4 的发布已经把大家的想象力拉到了一个新高度,而本周密集落地的 LLM 应用,更是让那些想象一步步变成现实。今天就来拆解一套完整的 ChatGPT 训练方案,全程可实操,希望给正在探索的小伙伴一些硬核参考。 过去两周,LLM 相关的开源社区涌
LLM 这两周带来的震撼和惊喜,确实让人应接不暇。GPT-4 的发布已经把大家的想象力拉到了一个新高度,而本周密集落地的 LLM 应用,更是让那些想象一步步变成现实。今天就来拆解一套完整的 ChatGPT 训练方案,全程可实操,希望给正在探索的小伙伴一些硬核参考。
过去两周,LLM 相关的开源社区涌现了不少亮眼工作,其中让我印象最深的是 Stanford 基于 LLaMA 的 Alpaca,以及随后出现的 LoRA 版本 Alpaca-LoRA。原因很简单——成本。Alpaca 宣称只用不到 600 美元(包括构建数据集),就能让 LLaMA 7B 达到接近 text-da vinci-003 的效果。而 Alpaca-LoRA 更进一步,让一块消费级显卡就能在几小时内完成 7B 模型的微调。
下面这张表是社区成员实测可以跑通的硬件规格和耗时:
根据实测数据,微调 7B 模型只需要 8–10 GB 显存。这意味着在 Google Colab 上完成训练也完全可行。既然门槛已经降到这个程度,那就直接动手吧。
为什么要训练自己的 ChatGPT?
理由其实很直白:
- 个人层面,这事儿本身就非常酷。
- 让模型能讲自己熟悉的语言。
- 让模型帮忙写注释、补测试代码。
- 把产品文档喂给模型,让它去回答用户的基础问题。
- 还有更多场景等待挖掘。
计划
要训练自己的 Chat 模型,理论上需要以下几步:
第一步:准备数据集
微调的目标通常分两种:一种是像 Alpaca 那样,收集 input/output 生成 prompt 进行训练,让模型完成特定任务;另一种是语言填充,直接收集文本让模型学习补全。以第一种为例——假设目标是让模型讲中文,最简单的办法是用其他 LLM(比如 text-da vinci-003)把现有的数据集(比如 Alpaca)翻译成中文。这个思路在开源社区已经有人实现了。
第二步:训练并应用 LoRA
在准备好的数据集上直接微调。
第三步:合并模型(可选)
将 LoRA 权重与基座模型合并,可以加速推理,也为后续量化做准备。
第四步:量化(可选)
量化能进一步加速推理、降低显存占用,这方面已经有现成的开源工具可以直接用。
实践
先挑软柿子捏——目标就从“让模型讲中文”开始。数据集用的是 Luotuo 作者翻译的 Alpaca 中文版,训练代码主要来自 Alpaca-LoRA。
准备
先克隆 Alpaca-LoRA 代码库:
git clone git@github.com:tloen/alpaca-lora.git
下载中文数据集:
wget https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json
创建虚拟环境并安装依赖(注意根据 CUDA 版本调整):
conda create -n alpaca python=3.9
conda activate alpaca
cd alpaca-lora
pip install -r requirements.txt
训练
单卡选手直接执行:
python finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path '/path/to/trans_chinese_alpaca_data.json' \
--output_dir './lora-alpaca-zh'
双卡选手需要多几步:
WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \
--nproc_per_node=2 --master_port=1234 finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path '/path/to/trans_chinese_alpaca_data.json' \
--output_dir './lora-alpaca-zh'
在我的环境(2× RTX 3090 Ti 24GB)下,需要额外调小 --micro_batch_size 2 避免 OOM。其他推荐参数:--num_epochs 2。
训练过程比较稳定,用 nvitop 可以实时观察显存和 GPU 利用率:
下面是训练时模型收敛的情况,差不多 2 个 epoch 就收敛得不错了:
推理
单卡选手直接执行:
python generate.py \
--base_model "decapoda-research/llama-7b-hf" \
--lora_weights './lora-alpaca-zh' \
--load_8bit
双卡选手稍微麻烦点——目前还不支持双卡推理,需要手动修改 generate.py,在第 47 行添加相应代码(见下图)。
然后执行上面的命令即可。如果推理运行在服务器上,希望从其他终端访问,给 launch 方法加上 server_name="0.0.0.0" 参数就行。打开浏览器,就能看到成果了。
加速推理
Alpaca-LoRA 提供了 export_hf_checkpoint.py 等脚本来合并模型。合并后的模型可以用 llama.cpp 等工具获得更好的推理性能。
测试
最后来对比一下原生 Alpaca 和自己微调的 Alpaca,看看模型到底有没有学会讲中文。
Good Examples
Bad Examples
可以看到模型确实在讲中文,也能根据中文指令和输入完成一些任务。但由于 LLaMA 本身的训练数据大部分是英文,加上 Alpaca 数据集翻译后的质量有限,某些场景下效果不如原生 Alpaca。这也再次印证了高质量数据对 LLM 的重要性。
总结
作为一个分布式系统方向的工程师,微调 LLM 的过程中遇到了不少坑,也收获了很多乐趣。虽然 LLaMA 7B 展现的能力还比较有限,但开源社区后续的进展很值得期待。接下来计划尝试针对特定场景微调 LLM,比如让模型教我做饭,感兴趣的朋友可以保持关注。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:如何训练自己的ChatGPT:新手入门完整指南要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点市面上的AI音频生成工具虽然众多,但能真正实现“从零构建完整声音世界”的产品屈指可数。Audiogen正是这样一款创新平台——它利用人工智能技术,通过简单的文本描述即可生成免版税的音频样本、乐器音色、音效及声音纹理。这意味着,您无需在庞大的采样库中费力搜寻,也不必受传统音频制作流程的约束;只需输入创
说实话,第一次见到这个工具的时候,我还有点怀疑——文字转音乐,几秒钟出成品,还是免版税?这听起来像是把“作曲家”这门手艺压缩进了一个手机App里。但实际体验下来,你会发现它确实有自己的一套逻辑:不是取代创作,而是把创作的起点拉到了“一句话”这么近的距离。 什么是AI Music Creator: T
需求人群 谈到品牌标识设计需求,其实适用门槛非常低。无论是个人设计师希望快速生成概念草图,还是初创公司缺少一个正式Logo,甚至连已经运营中的项目团队,只要需要Logo设计方案,都能借助这款AI智能设计工具。AI算力直接接管从创意到落地的全流程,省去反复沟通与修改的时间成本。 使用场景 举个实际案例
在音乐创作中,设计流畅的和弦进程常常令人头疼——尤其是灵感枯竭时,或想探索从未尝试过的和弦走向。有没有一款AI和弦生成工具能帮你快速打草稿?今天介绍的这个工具,正是为此而生。 什么是ChordChord? ChordChord本质上是一款智能和弦进程生成器,内置AI和弦播放功能。简单来说,它能借助A
- 日榜
- 周榜
- 月榜
热点快看
