Llama-Factory适配国产显卡:昇腾、寒武纪也可运行

在大模型时代,微调已成为企业构建专属AI能力的核心路径。然而,当主流工具链几乎全部绑定英伟达CUDA生态时,国产AI芯片即便性能达标,也常常陷入“有算力无生态”的尴尬境地——硬件上得去,软件跑不动。

这一困局正在被打破。Llama-Factory 作为近年来广受关注的开源大模型微调框架,已成功实现对华为昇腾(Ascend)和寒武纪MLU系列芯片的支持。这意味着开发者可以在不依赖NVIDIA GPU的情况下,完成从数据预处理到QLoRA微调、再到模型评估的全流程任务。这不仅是技术层面的一次移植,更是一次面向全国产化AI基础设施的关键探索。


Llama-Factory 的核心定位是“大模型微调的一站式工厂”。它支持包括LLaMA、Qwen、Baichuan、ChatGLM等在内的100多种主流架构,并通过模块化设计集成全参数微调、LoRA、QLoRA等多种训练范式。更重要的是,其后端基于PyTorch构建,天然具备良好的扩展性,为跨平台适配提供了基础条件。

整个训练流程由YAML配置驱动,同时提供Gradio搭建的WebUI界面,用户无需编写代码即可完成参数设置、启动训练、查看日志甚至中断恢复。这种低门槛的设计,使得即便是非专业算法团队也能快速上手定制领域模型。

但真正让它脱颖而出的,是对国产硬件的支持能力。相比其他同类项目大多聚焦于LLaMA系列+CUDA组合,Llama-Factory 在底层做了大量抽象工作,使其能够识别并调度昇腾NPU或寒武纪MLU设备,真正实现了“一次开发,多平台运行”。

这一切的关键,在于 device_map="auto" 这个看似简单的配置项。

from llamafactory.api import train_model

config = {
    "model_name_or_path": "meta-llama/Llama-3-8b",
    "dataset": "alpaca_en",
    "finetuning_type": "qlora",
    "lora_rank": 64,
    "lora_alpha": 16,
    "quantization_bit": 4,
    "output_dir": "./output/llama3-qlora",
    "per_device_train_batch_size": 4,
    "gradient_accumulation_steps": 8,
    "learning_rate": 2e-4,
    "num_train_epochs": 3,
    "device_map": "auto"
}

train_model(config)

这段代码之所以能在不同平台上通用,是因为框架内部实现了一套动态设备探测与插件加载机制。当程序启动时,它会依次检查环境中是否存在 torch_nputorch_mlu 模块。如果检测到昇腾环境,则自动切换至NPU后端;若识别出寒武纪设备,则启用MLU支持。张量迁移、混合精度、梯度计算等操作都会被映射到底层对应的算子库中,而这一切对用户完全透明。


以昇腾910为例,其配套软件栈CANN(Compute Architecture for Neural Networks)提供了类CUDA的编程接口。通过华为官方维护的 torch_npu 扩展,PyTorch的操作可以被重定向至ACL(Ascend Computing Library)执行。设备标识为 npu:0,使用方式与 cuda:0 几乎一致:

import torch
import torch_npu

device = "npu:0" if torch.npu.is_available() else "cpu"
model = model.to(device)

with torch.npu.amp.autocast():  # 启用BF16混合精度
    outputs = model(**inputs)
loss = outputs.loss
loss.backward()

Llama-Factory 将此类细节封装在运行时层中,开发者只需确保依赖安装正确,无需修改任何训练逻辑。不过实际部署中仍需注意几点:

  • 算子覆盖率问题:部分高级操作如稀疏注意力、特定归一化层可能尚未在ACL中实现,需降级或替换;
  • 版本强耦合:CANN、Kernel、Driver之间必须严格匹配,否则容易出现段错误或初始化失败;
  • 调试工具链薄弱:相比Nsight系列工具,昇腾目前缺乏高效的可视化分析手段,性能瓶颈定位较为困难;
  • 量化支持待完善:虽然框架启用了4-bit量化(quantization_bit=4),但在原生硬件层面尚属模拟实现,效率不如CUDA+bitsandbytes组合。

尽管如此,在单卡环境下运行LLaMA-7B级别的QLoRA微调已是可行。这对于政务、金融等对安全可控要求极高的行业而言,意义重大——不再需要将敏感数据上传至国外云平台进行训练。


再看寒武纪平台,其MLU芯片同样通过 torch_mlu 实现了与PyTorch的对接。MagicMind编译器负责图优化与算子融合,CNCL(Cambricon Collective Communication Library)支撑多卡通信。设备抽象层保持统一风格,使用 mlu:0 表示第一块加速卡:

import torch
import torch_mlu

device = "mlu:0" if torch.mlu.is_available() else "cpu"
model = model.to(device)

with torch.mlu.amp.autocast():  # 支持FP16
    outputs = model(**inputs)

寒武纪的优势在于静态图优化能力强,适合部署阶段加速。但在训练场景下也有明显短板:

  • 动态图控制流支持有限,复杂调度逻辑可能导致编译失败;
  • 单卡显存容量通常低于高端GPU(如A100 80GB),限制了可处理的模型规模;
  • 社区生态较小,遇到问题时难以找到现成解决方案;
  • 编译耗时较长,不适合频繁迭代的实验型任务。

因此,在使用Llama-Factory进行微调时,建议优先选择QLoRA而非全参微调,结合小batch size与梯度累积策略来缓解显存压力。例如对于Baichuan-13B这类大模型,可将 per_device_train_batch_size 设为1~2,配合 gradient_accumulation_steps=16 来稳定训练过程。


典型的国产化微调系统架构呈现出明显的分层特征:

[用户交互层] ←→ WebUI / CLI
      ↓
[Llama-Factory 框架层] ←→ 训练调度、数据处理、评估
      ↓
[PyTorch 运行时]
      ↓
[设备抽象层] ←→ torch_cuda / torch_npu / torch_mlu
      ↓
[国产AI芯片] ←→ Ascend 910 / MLU370
      ↓
[CANN / MagicMind / CNToolkit]

这种设计实现了软硬件解耦:上层业务逻辑不变,仅通过更换底层绑定模块即可迁移到不同硬件平台。只要各厂商提供的PyTorch扩展遵循标准Device API规范,Llama-Factory 就能无缝兼容。

这也带来了新的工程思考:未来的AI框架是否应进一步强化“硬件不可知”(hardware-agnostic)能力?尤其是在国产替代加速推进的背景下,统一接口的价值远超单一平台的极致优化。


在真实落地过程中,有几个实践要点值得特别关注:

  1. 微调方式选择
    - 小模型(<7B)可根据资源情况尝试全参数微调;
    - 大模型(≥13B)强烈推荐QLoRA,可在单卡完成轻量级适配;

  2. 显存与吞吐平衡
    国产芯片显存普遍小于H100/A100,建议降低每卡batch size,增加梯度累积步数。例如:
    yaml per_device_train_batch_size: 2 gradient_accumulation_steps: 16
    可模拟全局batch size=32的效果。

  3. 混合精度启用
    昇腾推荐使用BF16,寒武纪支持FP16,均可显著提升计算吞吐。务必开启AMP:
    python with torch.npu.amp.autocast():

  4. 检查点保存策略
    国产平台稳定性仍在演进中,建议设置较短的保存周期(如 save_steps: 50),避免长时间训练因意外中断导致前功尽弃。

  5. 监控工具配合使用
    - 昇腾使用 npu-smi 查看温度、功耗、利用率;
    - 寒武纪使用 cnmon 实时监控设备状态;
    - 结合TensorBoard或WandB跟踪loss曲线与学习率变化。


Llama-Factory 对国产芯片的支持,标志着我国AI生态正从“硬件自主”迈向“生态自主”。过去许多单位采购了昇腾或寒武纪设备却长期闲置,正是因为缺少可用的大模型训练工具链。如今这些“沉睡的算力”终于被唤醒。

更重要的是,这种适配不是简单打补丁,而是通过抽象层设计实现的系统性兼容。它降低了国产算力的使用门槛,让开发者无需深入理解NPU特有编程模型也能完成模型微调。这种“隐形适配”才是推动生态融合的关键。

未来随着更多算子优化、分布式训练策略以及原生量化方案在国产平台落地,Llama-Factory 有望成为连接大模型技术与国产算力之间的核心桥梁。我们或许正在见证一个新趋势的起点:国产芯片不再只是备选方案,而是可以独立支撑完整AI研发闭环的可靠底座。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐