针对 Yi 6B 和 34B 进行微调代码

Llama Factory lora微调:LLM - 大模型速递之 Yi-34B 入门与 LoRA 微调_yi大模型 技术博客-CSDN博客

准备

从图像

默认情况下,我们使用来自BAAI/COIG的小型数据集来微调基础模型。您还可以按照以下jsonl格式准备自定义数据集:

{ "prompt": "Human: Who are you? Assistant:", "chosen": "I'm Yi." }

然后将它们挂载到容器中来替换默认的:

docker run -it \
    -v /path/to/save/finetuned/model/:/finetuned-model \
    -v /path/to/train.jsonl:/yi/finetune/data/train.json \
    -v /path/to/eval.jsonl:/yi/finetune/data/eval.json \
    ghcr.io/01-ai/yi:latest \
    bash finetune/scripts/run_sft_Yi_6b.sh

从本地服务器

确保你有 conda。如果没有,请使用

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
source ~/.bashrc

然后,创建一个 conda 环境:

conda create -n dev_env python=3.10 -y
conda activate dev_env
pip install torch==2.0.1 deepspeed==0.10 tensorboard transformers datasets sentencepiece accelerate ray==2.7

硬件设置

对于 Yi-6B 型号,建议使用具有 4 个 GPU 的节点,每个 GPU 内存大于 60GB。

对于 Yi-34B 模型,由于使用零卸载技术会占用大量 CPU 内存,请注意限制 34B 微调训练中的 GPU 数量。请使用 CUDA_VISIBLE_DEVICES 来限制 GPU 数量(如 scripts/run_sft_Yi_34b.sh 中所示)。

用于微调 34B 模型的典型硬件设置是一个具有 8GPUS 的节点(通过 CUDA_VISIBLE_DEVICES=0,1,2,3 限制运行时为 4 个),每个 GPU 内存大于 80GB,总 CPU 内存大于 900GB。

快速开始

将 LLM 基础模型下载到 MODEL_PATH(6B 和 34B)。典型的模型文件夹如下:

|-- $MODEL_PATH
|   |-- config.json
|   |-- pytorch_model-00001-of-00002.bin
|   |-- pytorch_model-00002-of-00002.bin
|   |-- pytorch_model.bin.index.json
|   |-- tokenizer_config.json
|   |-- tokenizer.model
|   |-- ...

将数据集从 huggingface 下载到本地存储 DATA_PATH,例如 Dahoas/rm-static。

|-- $DATA_PATH
|   |-- data
|   |   |-- train-00000-of-00001-2a1df75c6bce91ab.parquet
|   |   |-- test-00000-of-00001-8c7c51afc6d45980.parquet
|   |-- dataset_infos.json
|   |-- README.md

finetune/yi_example_dataset有示例数据集,这些数据集是从BAAI/COIG修改而来的

|-- $DATA_PATH
    |--data
        |-- train.jsonl
        |-- eval.jsonl

cd进入脚本文件夹,复制并粘贴脚本,然后运行。例如:

cd finetune/scripts

bash run_sft_Yi_6b.sh

对于Yi-6B基础模型,设置training_debug_steps=20和num_train_epochs=4可以输出聊天模型,大概需要20分钟。

对于Yi-34B基础模型,初始化需要相对较长的时间。请耐心等待。

评估

cd finetune/scripts

bash run_eval.sh

然后你会看到基础模型和微调模型的答案

Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐