1. 数据准备

两台以上的宿主机并且已经配置了k8s相关组件(两个为例master-1,和node-1

 

#训练数据目录介绍

Qwen1.5-0.5B-Chat 模型⽂件

output 训练输出⽬录 

LLaMA-Factory 代码⽬录

datasets 数据集⽬录

hostfile 节点配置

每个宿主机的目录结构如下:

/home/data/

├── datasets/

│   └── info/

│       ├── info.json

│       └── info.json

├── deployment.yaml

├── hostfile

├── LLAMA-Factory/

├── output/

└── Qwen1.5-0.5B-Chat/

3运行微调实例

k8s部署对应的pod实例

#在宿主机上(主节点)创建deployment.yaml

touch deployment.yaml

vim deployment.yaml#网上寻找写入下面的内容

(主节点)查看pods运行情况和ip地址 (pod分别运行在两个节点上)

kubectl get pods -o wide

  1. 4实例配置信息

(主节点查看) kubectl get pods -o wide##查看对应pod的ip

(全部实例执行)进入容器内部

kubectl exec -it <pod_name> -- /bin/bash #对应的实例名字

1.(全部实例执行)配置域名解析

vim /etc/hosts#编辑hosts地址

2.(全部实例执行)配置ssh免密

ssh-keygen -t rsa -b 2048 #一直回车

#手动复制公钥

首先查看公钥内容:

cat ~/.ssh/id_rsa.pub

复制到下面的authorized_keys

vim ~/.ssh/authorized_keys#确保不同节点之间都有对方的公钥

全部实例执行)开启实例ssh服务

/etc/init.d/ssh start

3.(全部实例执行)配置分布式微调使用的节点

vim /mnt/models/hostfile ##路径为deploment.yaml文件挂载的路径

# 修改实例名称,改为当前的实例名称

llamafactory-npu-deployment-5987fdd8bb-ct2s9 slots=1#机器的名字,slots该实例⽤⼏张卡

  1. 执行微调

1(主节点实例的容器内部)进⼊代码⽬录

cd /app

2(主节点实例的容器内部)启动lora微调任务

deepspeed --hostfile /mnt/models/hostfile src/train.py --deepspeed examples/deepspeed/ds_z2_config.json --stage sft --do_train --model_name_or_path /mnt/models/Qwen1.5-0.5B-Chat --dataset_dir /mnt/models/datasets/bocloud-info --dataset bocloud_info --template qwen --finetuning_type lora --cutoff_len 4096 --output_dir /mnt/models/output/0806-004 --overwrite_cache --per_device_train_batch_size 2 --gradient_accumulation_steps 1 --lr_scheduler_type cosine --logging_steps 1 --save_steps 1000 --learning_rate 5e-5 --num_train_epochs 100 --plot_loss --fp16 True --overwrite_output_dir --lora_r 16 --lora_alpha 32 --lora_dropout 0.1

  1. 合并微调权重和推理

#第一步切换到两个容器实例上查看对应的输出文件(分布式情况下对应的实例都查看下或者查看日志output输出到具体的那个实例)

cd /mnt/models/output/0806-004/

cd /app #切换的容器实例的app目录下编辑合并yaml文件

vim examples/merge_lora/qwen1.5_lora_sft.yaml

model_name_or_path: /mnt/models/Qwen1.5-0.5B-Chat  # 原模型路径

adapter_name_or_path: /mnt/models/output/0806-004/checkpoint-100  #生成的微调路径

template: qwen

finetuning_type: lora

export_dir: /mnt/models/merged_model  #合并之后的目录

export_size: 2

export_device: cpu

export_legacy_format: false

#执行合并命令

cd /app #切换到生成输出的实例app目录下

llamafactory-cli export examples/merge_lora/qwen1.5_lora_sft.yaml#执行合并命令

日志信息:

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐