一、微调前准备工作
环境准备:建议使用linux系统和anaconda进行环境的部署,输入
cat /proc/version
查看版本信息,以下是我所用的版本信息:
Linux version 6.8.0-38-generic (buildd@lcy02-amd64-049) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:25:01 UTC 2024
创建anaconda环境,记得使用python3.11,anaconda在linux上安装和创建环境的过程可以去其他教程查找,暂且不多赘述。
安装unsloth:
unsloth官网地址:https://github.com/unslothai/unsloth
下载unsloth文件,这里只需要其中的unsloth文件,这里修改成了在Linux上微调,
我们之后会使用pytorch2.3.0配合cuda12.1版本的gpu进行微调所以安装cuda12.1版本的unsloth以下是官方给出的安装代码:
conda create --name unsloth_env \
python=3.11 \
pytorch-cuda=12.1 \
pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers \
-y
conda activate unsloth_env
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install --no-deps "trl<0.9.0" peft accelerate bitsandbytes
安装必要的依赖项,运行微调代码的时候缺什么安装什么就行,这里主要注意torch和xformer的安装以及版本匹配问题。
建议使用我给出的版本以避免版本冲突问题:
pip install torch==2.3.0 --index-url https://download.pytorch.org/whl/cu121
pip install xformers==0.0.25.post1
测试安装是否成功:
nvcc --version
python -m xformers.info
python -m bitsandbytes
二、资源准备工作
从huggingface(https://huggingface.co/)上下载你需要的模型,这里我选择shenzhi-wang/Llama3-8B-Chinese-Chat做示范,事实上qwen的中文预训练模型也很不错。
准备json格式的数据集,huggingface上有公共的数据集,也可以通过chatGPT上的Alpaca Dataset制作自己的数据集。这里我选择huggingface上的数据集下载下来:Seikaijyu/Beautiful-Chinese,也可以自定义自己的数据集,只要是json格式的就行,可以使用以下chatGPT的插件Alpaca Dataset制作自己的数据集,
下载脚本文件:GitHub - onekid/unsloth: unsloth的本地化改造
将模型文件和数据集都放到unsloth根目录中,其中的fine-tuning.py为微调脚本,在我们之前设置的环境中运行,出现的lora_model文件夹就是生成的lora模型,output文件夹中为微调的大模型。
因为项目过去两个月可能有细节出错,但是大致流程是没问题的,欢迎在评论区指出问题,当前得到的模型是未经过量化的.safetensors格式,下一期我将描述如何使用llama.cpp量化所得到的模型文件,欢迎关注~