使用autoDL部署 , 微调Llama3-8b
首先使用云服务平台autoDL
登陆后租用服务器显存 : 32GB , 内存 : 50GB
选择基础镜像-
控制台-容器实例-点击JupyterLab
部署Llama-8b , 不可微调/训练
ollama
也可以使用Hugging Face的Transformers库或者其他的部署方式运行llama , 但ollama极大地简化了部署流程,尤其是本地环境中配置
下载ollama
在终端输入curl -fsSL https://ollama.com/install.sh | sh
开始下载ollama
出现报错如下 :
curl: (16) Error in the HTTP2 framing layer
curl: (28) Failed to connect to github.com port 443 after 130713 ms: Connection timed out
这一般是由网络问题导致的 , 终端输入source /etc/network_turbo
设置学术资源加速 继续逐行输入
sudo apt-get install lshw systemctl -y systemctl start ollama.service
出现包管理错误 , 报错如下
bash
# sudo apt-get install lshw systemctl -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package lshw
E: Unable to locate package systemct
通过包管理器安装手动安装lshw , 终端输入如下指令行 : sudo apt-get install lshw -y
启动 Ollama
适用于所有环境(包括 WSL/容器等无 systemd 的场景):ollama serve
下载llama3-8b模型
输入ollama pull llama3:8b
开始下载llama3-8b模型 , 下载成功后可输入ollama run llama3:8b
运行llama3 在交互式对话界面输入/bye
可结束对话
至此 , 部署Llama-8b模型结束
下载LLaMA-Factory微调llama
Ollama主要用于模型部署和运行,而不是训练或微调。LLaMA-Factory框架支持微调 终端逐行输入一下代码
bash
git clone https://github.com/hiyouga/LLaMA-Factory
conda create -n llama_factory python=3.10
cd ~/LLaMA-Factory
pip install -r requirements.txt
下载Llama-8b可微调模型
首先 , 一定 , 一定 , 开启学术资源加速 source /etc/network_turbo
可以登录Hugging Face ,申请Llama模型访问权限 , 生成Access Token , 下载模型
也可以从阿里巴巴推出的 ModelScope 平台的模型仓库下载指定模型
bash
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='/root/autodl-tmp')"
下载完成后准备训练数据文件(.jsonl)
从huggingface上下载翻译数据集 wmt/wmt19 at main
选择zh-en
文件夹 , 对应中英翻译 , 选择一个文件下载到本地
使用 python 将.parquet类型文件转为.jaonl文件
首先下载必要依赖
bash
pip install pandas pyarrow
运行以下代码
py
import pandas as pd
# 读取 Parquet 文件 , "train-00000-of-00013.parquet"为文件名
df = pd.read_parquet("train-00000-of-00013.parquet", engine="pyarrow")
# 转换为 JSONL 格式(每行一个 JSON 对象)
df.to_json("output.jsonl", orient="records", lines=True, force_ascii=False)
上传文件至文件夹 , 文件路径为/root/autodl-tmp/LLaMA-Factory/data/output.jsonl
在dataset_info.json文件下添加以下内容 :
json
{
"translation_dataset": {
"file_name": "train.jsonl",
"file_path": "/root/autodl-tmp/LLaMA-Factory/data",
"columns": {
"prompt": "translation.en",
"response": "translation.zh"
},
"preprocessing": {
"max_length": 1024, //最长输入文本
"truncation": true, //超出文本是否截断
"padding": "longest" //按批次内最长文本动态填充
}
}
}
补充 : .jsonl 文件不允许写注释 , 请删除注释部分
Llama3-8B 输入最多支持 8192 tokens
开始微调 :
js
cd /root/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 llamafactory-cli train --stage sft --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct --finetuning_type lora --template llama3 --dataset_dir /root/LLaMA-Factory/data --dataset translation_dataset --cutoff_len 1024 --learning_rate 2e-5 --per_device_train_batch_size 2 --gradient_accumulation_steps 8 --lora_rank 8 --lora_target q_proj,v_proj --output_dir saves/llama3-8b-lora --fp16 True