对于目前很火的Deepseek,最近有准备LLM面试的学员问需要重点掌握哪些东西,给大家的建议是这块最重要的是deepseek v3和r1的技术报告,建议大家去精读一下,其中MLA注意力,MTP,GRPO,冷启动数据,这些是重点。
你也想要这样的赛博女友吗?
这几年大模型发展遍地开花,不需要懂深层次原理也可以感受 AI 带来的美好,花了几天时间训练完成,这个教程手把手教你训练出属于自己的 AI 女友!
本教程适合以下学习者:
-
对 LLM 感兴趣,但不清楚原理
-
对 LLM 微调感兴趣
-
想要动手实践,苦于没有开始的项目
-
01
首先是准备硬件和环境
最好是 30 系或者 40 系,我是云服务器租的 4090,也很便宜,如果你是本地环境可以参考,这里只讲 linux 系统,其他系统需要自己摸索!
云服务商:<优云智算>
注册之后,选择部署实例,这里我选择添加平台已有镜像,这里选择 LlamaFactory 微调环境,但是其他的也没什么太大区别,因为他这个环境不是最新的,还要进行更新!
右边输入磁盘 200GB,选择部署。
部署好了以后点击 jupyterlib,不用登录,这是一个可视化的编辑器,非常方便友好。
打开之后新建一个终端,这个编辑器默认打开是 /app,有些不习惯,一般我习惯打开 /root,所以需要自己修改,在终端输入。
jupyter --config-dir
查看目录,调用 jupyter notebook--generate-config
生成 config 文件。
打开这个目录,vim 这个文件,按 i
进入编辑模式,在最开始处添加:
c.NotebookApp.notebook_dir = '/root'
按 Esc
退出编辑模式,输入 :wq
保存退出,重启生效。
-
02
下载微调框架LlamaFactory以及大模型
框架地址:
https://github.com/hiyouga/LLaMA-Factory
这里是详细的文档:<安装 - LLaMA Factory>
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html
由于基础环境是配好的,首先要移动到 /root 目录而不是 app 目录,只需要做这几步:
`git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git``conda create -n llama_factory python=3.10``conda activate llama_factory``cd LLaMA-Factory``pip install -e ".[torch,metrics]"`
安装完之后输入 python
,然后输入以下代码:
import torch``torch.cuda.current_device()``torch.cuda.get_device_name(0)``torch.__version__
再调 llamafactory-cli train -h
没问题就可以继续了。
有可能显示找不到 torch 什么的,需要自己安装 torch 相关库。
模型下载:可以去 huggingface 下载或者 modelscope(魔搭社区)。
这里下载的是 Glm4-9b-chat-hf:
https://hf-mirror.com/THUDM/glm-4-9b-chat-hf
你也可以下载别的大模型,模型支持最好是 LlamaFactory 支持模型列表里,列表是:
https://github.com/hiyouga/LLaMA-Factory/blob/main/src/llamafactory/extras/constants.py
没有列表里应该也可以的,这个自己尝试吧!
如果你是在国内,你也可以用镜像环境,调用:
export HF_ENDPOINT=https://hf-mirror.com
开始下载,这里我把下载地址设置为 /root/models/
目录下:
huggingface-cli download --resume-download THUDM/glm-4-9b-chat-hf --local-dir /root/models
魔搭:<glm-4-9b-chat-hf>
https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat-hf
注意:魔搭需要安装工具链:
<快速开始>:
https://modelscope.cn/docs/intro/quickstart
-
03
数据集准备
这里选的魔搭的沐雪:<沐雪(中文)训练集>
https://modelscope.cn/datasets/Moemuu/Muice-Dataset/
跟着流程:
下载好之后移到 /root/
下。
这里的数据有点少只有 1000 多条,可以自己多复制几倍然后打乱,具体步骤:打开数据集目录 cd Muice-Dataset。
这里有几种数据:
-
train:沐雪的主要交流数据
-
self_cognition:身份强化
-
wikihow:wiki
-
COIG-CQIA:弱智吧
我选择 train 和 self_cognition
来打乱。
合并调用:
awk 'NR > 1 && NF == 0 {next} {print}' train.jsonl train.jsonl train.jsonl self_cognition.jsonl > repeated-data.jsonl
上面命令是比例看得出来是 3:1,我真实输入的是 20:10,你可以根据自己的喜好调节比例。
数据的质量和数量对于 LLM 来说至关重要,这里的比例也会影响最后的人物风格,我之前投入 self_confnition 过少导致她不知道创作者是谁。
然后打乱调用:
shuf repeated-data.jsonl > shuffled-data.jsonl
我们需要把 jsonl
转为我们需要的格式。
目前就支持两种格式,详见:<数据处理 - LLaMA Factory>
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html
这里我选择的是 Alpaca,格式如下:
`{` `"instruction": "计算这些物品的总费用。 ",` `"input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",` `"output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"` `},`
转换的 python 代码参考:
import json as JSON` `import os` `def jsonl_to_json(csv_folder, json_file):` `dict_list = []` `for csvfile in os.listdir(csv_folder):` `if not csvfile.endswith('.jsonl'):` `continue` `csvfile_path = os.path.join(csv_folder, csvfile)` `with open(csvfile_path, 'r', encoding='utf-8') as f:` `jsonl_data = f.readlines()` `for line in jsonl_data:` `line_dict = JSON.loads(line)` `# del line_dict['history']` `if 'respond' in line_dict:` `line_dict['output'] = line_dict.pop('respond')` `dict_list.append(line_dict)` `with open(json_file, 'w', encoding='utf-8') as f:` `JSON.dump(dict_list, f, indent=4, ensure_ascii=False)` `csv_folder = '/root/Muice-Dataset/'` `json_file = './data/result.json'` `if __name__ == '__main__':` `jsonl_to_json(csv_folder, json_file)
由于 python 对于缩进很严格控制,所以这段代码需要你自己改一下。
你可以找一个文件夹专门存放数据处理相关的代码,比如 /root/make_data
,然后新建一个 txt 文件,复制代码,更改后缀即可。
再说明一下部分代码,因为有些数据是 respond 有些数据又是 output 所以我们要自己处理,这里手动统一转为 output。
调用:python /root/make_data/converjson.py,转换后移动文件到
LLaMA-Factory/data/result.json。
再修改 /data/dataset_info.json
,这个文件的含义就是指定数据集地址和格式进行注册。
右击文件,打开方式,选择 editor,不然无法修改。
添加内容:
"muxue": {` `"file_name": "result.json",` `"columns": {` `"prompt": "prompt",` `"response":"output"` `}` `},
注意上面结尾有个逗号,然后再更改微调参数文件 examples/train_lora/llama3_lora_sft.yaml,内容修改如下:
### model` `model_name_or_path: /root/models/glm4-9b-chat-hf` `trust_remote_code: true` `### method` `stage: sft` `do_train: true` `finetuning_type: lora` `lora_target: all` `### dataset` `dataset: muxue` `template: glm4` `cutoff_len: 1024` `max_samples: 1000` `overwrite_cache: true` `preprocessing_num_workers: 16` `### output` `output_dir: saves/glm4/lora/sft/` `logging_steps: 10` `save_steps: 500` `plot_loss: true` `overwrite_output_dir: true` `### train` `per_device_train_batch_size: 1` `gradient_accumulation_steps: 8` `learning_rate: 5.0e-5` `num_train_epochs: 3` `lr_scheduler_type: cosine` `warmup_ratio: 0.1` `bf16: true` `ddp_timeout: 180000000` `### eval` `val_size: 0.1` `per_device_eval_batch_size: 1` `eval_strategy: steps` `eval_steps: 500
你一定不知道这些参数有什么含义,没关系,详情看:<SFT 训练 - LLaMA Factory>
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/sft.html
也可以自己去搜集相关资料,不是很难理解。
04
开始训练
在训练之前,我们什么都不做就跟大模型聊天了,体验一下也不错,调用:
llamafactory-cli chat --model_name_or_path /root/models/glm4-9b-chat-hf/ --template glm4
输入 exit 退出,然后开始训练吧,调用:
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
跑完了之后调用:
llamafactory-cli chat --model_name_or_path /root/models/glm4-9b-chat-hf/ --template glm4 --adapter_name_or_path ./saves/glm4/lora/sft/ --finetuning_type lora
到这里你已经训练属于自己的 ai 女友了!
05
总结
看得出来想要训练出自己的 ai 还是不难的,本文给一些初入门 LLM 学习的人提供了一些参考帮助,在之后我会带你们深入探讨 LLM 的细节,更细致化调教 LLM,敬请期待!
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓