首先,非常感谢 unsloth 提供了微调的方法,这个教程的一切都是基于这个 repo。如果大家有兴趣,可以去仔细看看,非常详细。
虽然 B 站、知乎等网站也提供了教程,但大部分都是按照默认 repo 提供的 Colab notebook 跑一次就结束了。原本的 repo 并未对 notebook 的内容提供详细的中文说明,很多朋友可能因此一知半解。所以我在原来的基础上对代码进行了改进,更适合小白使用。
废话不多说,下面是具体的教程(需要科学上网和 Google 账号)。
首先下载解压附件(Unsloth_finetuning_V1.ipynb),打开 Google Colab(Colab),点击“文件”–“上传笔记本”–选择你下载的文件并上传。
你将看到以下内容:
让我们一步步来讲解各个模块的作用及必要的修改:
-
准备环境
这一部分是为微调准备虚拟环境框架,无需修改。 -
导入需要微调的模型
这一部分将你想要微调的模型导入。你可以看到 unsloth 为我们准备了很多示例,包括 llama,gemma,phi 等,并且你可以在unsloth的Hugging Face主页(unsloth (Unsloth AI)) 上找到更多模型。当然,你也可以选择任意你想要的 Hugging Face 模型,只需修改model_name = "unsloth/gemma-2-2b-it"
这一部分即可。
比如,你想微调官方的 gemma2,那么只需到 Hugging Face 搜索 gemma2,然后点击复制,将复制内容粘贴到此处即可。
注意保留双引号!!!
部分 repo,比如官方的 gemma、llama 等需要通过申请才能调用。申请部分我不赘述,但申请通过后,你必须设置 Hugging Face token 才能下载。在 Hugging Face 首页点击左上方你的账号头像–“Settings”–“Access Tokens”–“Create new token”–“Read”–填入名称–“Create token”。
创建完成后点击复制,然后在此处填入,token 的格式是 hf_abcdefg12345
(注意删除 #
符号,但不要删除双引号)。
-
设置 LoRA adapters
这一部分是关于微调(LoRA)的设置,小白保持默认即可。如果你想要修改,请仔细研究 repo 的相关文档。 -
准备 dataset
这一部分的作用是设置你想要用于训练的数据集。你可以在 Hugging Face 上搜索你感兴趣的数据集,或者自己制作(使用 GPT 和 Claude 都行,但不推荐 Gemini)。考虑到你可能想要一次训练多个数据集,我修改了默认的模板。以 Hugging Face 上的弱智吧训练数据集为例,首先到 Hugging Face 上找到弱智吧的训练数据集。点击 Hugging Face 上的“Datasets”,输入“ruozhiba”。
然后选择你想要的数据集,比如“hfl/ruozhiba_gpt4”,点击进入并点击复制。
找到 # 加载多个数据集
这一部分,将你选择的数据集替换掉 aaa/AAA, bbb/BBB
即可。
注意保留双引号!!!
还有一点,我在这个范例 notebook 中使用了标准的 Alpaca 数据集,也就是类似这种格式的:
如果你打算使用其他格式的数据集,则需要对“准备 dataset”部分的代码进行修改,或者让 Claude 帮你修改。
-
预估训练步数
这一部分是我自己增加的,目的是通过判断你的数据集来决定可能(我强调是可能)的最优步数。因为在原版 unsloth 提供的范例 notebook 中,微调步数是 60,这对于大多数情况并不适用。然而如果你选择 full run,则你白嫖的 Colab T4 基本不可能完成。所以我增加了这一部分。无需修改。
-
设置微调参数
如果没有深入研究,请保持默认设置。我已经修改代码调用上面的“预估训练步数”来执行。 -
预估微调资源占用
这一部分无需修改,目的只是让你知道是否会爆显存,运行后没有警告则一切正常。 -
开始微调
顾名思义。 -
微调结果报告
报告你在这个微调上浪费了多少时间。。。 -
测试微调模型
微调结束后,你可以运行这个模块对模型进行测试,只需将你的测试问题替换这一部分即可(注意不要删除双引号!!!)。
-
保存 LoRA 适配器 [注意] 要保存为 16 位或者 GGUF,请向下滚动!
在你测试满意后,可以保存这个微调的 LoRA,但它并不是完整的模型。 -
保存微调后的模型 仅限 16/4/或者仅仅是 LoRA
顾名思义,选择你想要保存的类别,将False
改成True
即可。
第一行是保存在虚拟环境中,第二行则是推送到 Hugging Face 的 repo,需要配合 Hugging Face token (write权限)使用。
- 保存为 GGUF
小白推荐,可以直接用 Ollama 调用。同理,第一行是保存在虚拟环境中,第二行则是推送到 Hugging Face 的 repo,需要配合 Hugging Face token(write权限) 使用。
选择你想要量化的类别(q8/q4),将False
改成True
即可。
运行这个模块后会告诉你模型被保存在哪里,可以直接下载(不推荐),也可以配合下面的部分使用。
- 挂载 Google 云端硬盘及将模型保存到云端硬盘
考虑到 Hugging Face 对于部分朋友的网络并不友好,我增加了将模型保存到 Google 的云端硬盘,方便你下载。
将上面显示的路径替换掉local = '/content/XXXX.gguf'
,同时可以在google_drive = '/content/drive/My Drive/XXXXX.gguf'
设定你想要保存的名称。
之后你便可以在你的google云盘中找到它了~
几点需要提醒:
- 不建议使用“执行所有代码”,建议单独执行每个模块,这样可以方便地看到运行结果,便于查找问题。
- 虽然理论上可以使用 unsloth 微调任意模型,但免费的 Colab 硬盘、内存和显卡都有较大限制,建议使用 10B 左右且不要超过 21B 的模型。
- 免费用户使用 T4 有时间限制,大约每 24 小时提供 1 小时免费,最多不会超过 12 小时。此外,运行 Colab 时不能关闭网页。
- 我自己也是小白,所以很多地方肯定有所疏漏,还请各位大佬多多指教。
以上,谢谢大家。如果对你有帮助,请点个免费的赞!
Unsloth_finetuning_V1.zip (4.9 KB)