昇腾910A LoRA微调QwQ-32B模型


记录下基于Ascend 910 对 QwQ - 32B 模型进行LoRA微调,此次微调使用了一台裸金属服务器,服务器配置为 8 卡910A,每卡显存为 32GB。在微调使用的是 llama - factory 套件。

llama - factory 套件的开源地址:https://github.com/hiyouga/LLaMA-Factory.git
入门教程:https://zhuanlan.zhihu.com/p/695287607
框架文档:https://llamafactory.readthedocs.io/zh-cn/latest/
框架文档(昇腾 NPU):https://ascend.github.io/docs/sources/llamafactory/

一、环境信息

  • 服务器信息:

    • CPU: Kunpeng920 * 4
    • NPU:Ascend 910A * 8(32GB)
    • 内存:768G
    • 硬盘:1.5T
  • 软件信息:

    • 驱动:23.0.0
    • 固件:1.0

二、环境安装

三、拉取镜像

镜像下载参考:http://mirrors.cn-central-221.ovaijisuan.com/detail/165.html

  • 拉取llama-factory:
docker pull swr.cn-north-4.myhuaweicloud.com/huzhiqiang/llamafactory0.9.1_cann8.0.rc1_python3.10_910a_32g:20250213

四、创建容器

docker run --shm-size=50g  --privileged=true  -it -d --net=host --ipc=host  \
--device=/dev/davinci0   \
--device=/dev/davinci1   \
--device=/dev/davinci2   \
--device=/dev/davinci3   \
--device=/dev/davinci4   \
--device=/dev/davinci5   \
--device=/dev/davinci6   \
--device=/dev/davinci7   \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm       \
--device=/dev/hisi_hdc        \
-v /var/log/npu/:/usr/slog    \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi     \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /data/disk1:/data/disk1  \ # 物理机和容器的挂载路径
--name llamafactory \
swr.cn-north-4.myhuaweicloud.com/huzhiqiang/llamafactory0.9.1_cann8.0.rc1_python3.10_910a_32g:20250213 \
bash

运行以上脚本,创建新的llama-factory容器。

五、准备模型

  • 到https://modelscope.cn/或者https://modelers.cn/下载QwQ-32B的模型权重。
  • modelscope为例:
    • 安装sdk:pip install modelscope
    • 下载模型:modelscope download --model Qwen/QwQ-32B --local_dir ./QwQ-32B

六、新建llama-factory训练QwQ-32B的配置文件

  • 进入上面创建的llama-factory的容器;
    • docker exec -it -u 0 llamafactory bash
  • 进入/root/LLaMA-Factory/主目录。
  • 修改配置文件,进入./examples/train_lora,新建一个qwq_32b_sft_ds3.yaml,填写如下参数:
### model
model_name_or_path: /data/disk1/QwQ-32B # 你的QwQ-32B的模型在容器中的路径
trust_remote_code: true

### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all
deepspeed: examples/deepspeed/ds_z3_config.json  # choices: [ds_z0_config.json, ds_z2_config.json, ds_z3_config.json]

### dataset
dataset: identity,alpaca_en_demo  # 微调的数据集
template: llama3
cutoff_len: 8192  # 你的上下文长度
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 1

### output
output_dir: saves/qwq-32b/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: 2
learning_rate: 1.0e-4
num_train_epochs: 60.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
fp16: true
ddp_timeout: 180000000

### eval
# val_size: 0.1
# per_device_eval_batch_size: 1
# eval_strategy: steps
# eval_steps: 500

七、模型微调

  • 开始微调
    在微调开始前,需要在终端导入一下两个命令:
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
  • 运行如下命令开始微调:
llamafactory-cli train examples/train_lora/qwq_32b_sft_ds3.yaml
  • 运行后的正常截图:
    在这里插入图片描述

在这里插入图片描述

  • npu资源使用:
    npu资源使用情况

  • 训练完成截图:
    训练完成

  • 训练完成后的模型文件:
    在这里插入图片描述

八、模型导出

  • 进入路径./examples/merge_lora,新建qwq_32b_lora_sft.yaml文件,内容如下:
### Note: DO NOT use quantized model or quantization_bit when merging lora adapters

### model
model_name_or_path: /data/disk1/QwQ-32B # 原模型路径
adapter_name_or_path: saves/qwq-32b/lora/sft # 微调后的路径
template: llama3
finetuning_type: lora
trust_remote_code: true

### export
export_dir: models/qwq-32b-lora # 生成新的权重路径
export_size: 2
export_device: cpu
export_legacy_format: false

  • 运行一下命令导出模型:
llamafactory-cli export examples/merge_lora/qwq_32b_lora_sft.yaml
  • 结果截图:
    在这里插入图片描述
    在这里插入图片描述
    后续也可以将微调后的模型使用MindIE推理引擎来推理。
<think>好的,我现在需要回答用户关于在Linux系统中部署Xinference知识库的问题。首先,我得仔细阅读用户提供的引用内容,看看里面有没有相关的步骤或信息。 根据引用[1],用户提到在Linux本地部署Langchain-chatchat-v0.3+Xinference+qwen-chat 1.5-72B时,首先创建了一个名为xinfer的conda虚拟环境,并安装了Python 3.10。这说明使用conda创建虚拟环境是部署Xinference的一部分。不过这里可能还涉及到其他步骤,比如安装Xinference本身以及相关依赖。 引用[2]提到用户尝试安装Xinference时使用了不同的pip命令,比如安装所有后端引擎的`pip install "xinference[all]"`,或者只安装transformers和vllm的`pip install "xinference[transformers,vllm]"`,但在Windows下遇到问题,后来切换到WSL的Linux环境下才成功。这说明在Linux环境下安装Xinference可能更可靠,但需要注意后端引擎的选择和可能的依赖问题。 引用[3]讨论了Xinference和Ollama在构建本地RAG知识库时的对比,定位和适用场景。虽然这里没有直接的部署步骤,但可以推测Xinference需要与其他工具如Langchain-chatchat结合使用,可能涉及模型部署和配置。 接下来,我需要整理这些信息,形成一个清晰的步骤指南。首先,确保系统环境是Linux,然后创建虚拟环境,安装Xinference,选择合适的后端,启动服务,最后验证部署。另外,用户可能需要下载模型,比如qwen-chat-72B,并配置相关参数,如端口号。还要注意可能的依赖问题,比如CUDA版本是否正确,是否需要安装额外的库。 可能遇到的问题包括安装时的依赖错误,这时候需要检查pip版本,确保Python版本是3.10,或者安装必要的系统库。此外,模型下载可能需要较长时间,或者需要特定的权限设置。如果用户遇到启动失败,可能需要检查日志,确认端口是否被占用,或者模型路径是否正确。 总结起来,步骤应该是:准备环境→安装Xinference→启动服务→下载模型→验证部署。同时,提供相关问题的建议,比如性能调优、模型选择等。</think>### 分步指南:在 Linux 系统中部署 Xinference 知识库 #### 1. **环境准备** - **安装 Conda** 若未安装 Miniconda/Anaconda,先通过以下命令安装: ```bash wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh ``` 按照提示完成安装后,初始化 Conda: ```bash conda init bash source ~/.bashrc ``` - **创建虚拟环境** 为避免依赖冲突,创建独立环境(需 Python 3.10): ```bash conda create -n xinfer python=3.10 conda activate xinfer ``` [^1] #### 2. **安装 Xinference** - **基础安装** 使用 pip 安装 Xinference 核心库: ```bash pip install xinference ``` - **选择推理后端** 根据硬件和需求安装对应后端(如使用 NVIDIA GPU 推荐 `vllm`): ```bash pip install "xinference[transformers,vllm]" # 常用组合 # 或安装全部后端 pip install "xinference[all]" ``` [^2] #### 3. **启动 Xinference 服务** - **本地启动** 运行以下命令启动服务(默认端口 9997): ```bash xinference-local ``` 若需自定义端口或绑定 IP: ```bash xinference-local --host 0.0.0.0 --port 8888 ``` - **验证服务状态** 访问 `http://localhost:9997` 或指定端口,查看 Web UI 是否正常。 #### 4. **部署模型(以 qwen-chat-72B 为例)** - **下载模型** 通过 Xinference CLI 下载模型: ```bash xinference register --model-type "LLM" --file "qwen-chat-1.5-72b" --endpoint http://localhost:9997 ``` - **启动模型实例** 使用以下命令加载模型(需根据 GPU 显存调整 `n-gpu`): ```bash xinference launch --model-name "qwen-chat-1.5-72b" --model-format "pytorch" --size-in-billions 72 --n-gpu 2 ``` #### 5. **集成知识库应用** - **连接 Langchain-Chatchat** 修改 Langchain-Chatchat 配置文件中 Xinference 的 API 地址和模型名称: ```yaml # config.yml inference_backend: type: xinference endpoint: http://localhost:9997 model_uid: "qwen-chat-1.5-72b" ``` - **启动知识库服务** 按照 Langchain-Chatchat 的部署流程启动服务即可。 #### 常见问题排查 - **依赖冲突** 若安装失败,尝试先升级 pip:`pip install --upgrade pip` - **CUDA 版本不匹配** 确保 CUDA 版本与 PyTorch 版本兼容(如 CUDA 11.8 + PyTorch 2.1+)。 - **端口占用** 使用 `netstat -tuln | grep 9997` 检查端口占用情况,必要时更换端口。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值