资讯动态

【LLM实战】如何把 LlamaFactory 接入统一网关?llm_AIO 项目实战保姆级教程

发布时间:2026/8/9 5:51:31 来源:尧图企业网站定制
摘要还在命令行里手动敲llamafactory-cli微调大模型吗还在为多任务管理混乱、模型路径泄露、显存经常 OOM 而头疼吗本文深入解析开源项目llm_AIO手把手教你如何将 LlamaFactory 封装成标准的 HTTP 服务实现异步训练、模型合并、OpenAI 兼容推理的全流程闭环。关键词LlamaFactory, LLM微调, FastAPI, LoRA, AI网关, 大模型部署目录一、 为什么需要把 LlamaFactory 接入网关二、 架构核心网关怎么调用底层三、 环境配置速查.env 设置四、 数据从哪里来两种方式方式1通过上传接口推荐方式2直接指定服务器路径五、 API 接口全攻略实战流程1. 第一步选模型和模板2. 第二步发起训练异步任务3. 第三步查进度4. 第四步模型合并导出5. 第五步启动推理服务核心亮点六、 附加功能任务管理七、 总结它比原生 LlamaFactory 强在哪一、 为什么需要把 LlamaFactory 接入网关原生 LlamaFactory 功能强大但通常是通过命令行交互。在生产环境或多人协作场景下直接暴露 CLI 存在几个痛点路径暴露风险人人都需要知道服务器的绝对路径。资源竞争多人同时训练显存直接爆炸缺乏统一门禁。管理混乱训练任务Job状态难追踪模型文件散落各处。llm_AIO项目解决了这个问题。它在 LlamaFactory 外面包了一层FastAPI 网关将其变成了一个标准的 Web 服务。先统一一个概念别叫错了在本文的架构中训练 CLI 子命令train合并 CLI 子命令export对话 启动api子进程通过 HTTP 交互不是终端里的chat命令二、 架构核心网关怎么调用底层整个项目的调用链非常清晰text[浏览器/前端] ↓ HTTP 请求 (POST /api/playground/llmfactory/train/lora) [llm_AIO FastAPI 主服务 (端口 8000)] ↓ 调用 app/services/llmfactory_service.py [底层 llmfactory 源码] ↓ 实际执行 llamafactory-cli train ... [GPU 服务器开始炼丹]关键点它并不依赖pip install llamafactory而是默认要求磁盘上有一个与llm_AIO同级的llmfactory源码目录。预期目录结构text 你的工作区/ ├── llm_AIO/ # 网关代码 └── llmfactory/ # LlamaFactory 源码 虚拟环境三、 环境配置速查.env 设置在启动项目前务必配好.env文件核心变量如下变量名作用示例LLMFACTORY_COMMAND_PREFIX指向 LlamaFactory 的虚拟环境 bin 目录llmfactory/.venv/binLLMFACTORY_MODELS_DIR存放所有基座模型的父目录/data/models/LLMFACTORY_MIN_FREE_VRAM_MIB显存门禁低于此值拒绝新任务4096(4GB)四、 数据从哪里来两种方式开始训练前你得告诉系统数据在哪。项目支持两种方式dataset_id优先方式1通过上传接口推荐先用POST /api/playground/datasets/upload上传你的 JSON/CSVAlpaca 或 ShareGPT 格式系统会返回一个dataset_id。训练时传这个 ID 即可服务端会自动处理格式转换。方式2直接指定服务器路径如果你已经把数据放在了服务器上直接传dataset和dataset_dir参数。五、 API 接口全攻略实战流程统一访问前缀http://你的IP:8000/api/playground/llmfactory1. 第一步选模型和模板bash# 查看可用基座模型 curl http://localhost:8000/api/playground/llmfactory/models # 查看支持的对话模板如 qwen, llama3 curl http://localhost:8000/api/playground/llmfactory/templates2. 第二步发起训练异步任务这里有三种模式LoRA低秩适配、QLoRA量化版、Full全量微调。每种都分异步和同步接口。推荐用异步防止 HTTP 超时。bash# 异步 LoRA 训练示例 curl -X POST http://localhost:8000/api/playground/llmfactory/train/lora \ -H Content-Type: application/json \ -d { model_id: Qwen2-7B, dataset_id: 你的数据集ID, template: qwen, learning_rate: 5e-5, num_train_epochs: 3 }返回{job_id: xxxx-xxxx, status: running}3. 第三步查进度拿到job_id后你可以轮询进度服务端会解析训练日志返回当前 Loss。bashcurl http://localhost:8000/api/playground/llmfactory/train/jobs/{job_id}/progress4. 第四步模型合并导出LoRA 训练完是“补丁”需要合并进基座模型才能直接用。bashcurl -X POST http://localhost:8000/api/playground/llmfactory/merge \ -H Content-Type: application/json \ -d {task_id: 刚才的job_id}5. 第五步启动推理服务核心亮点这是接口最强大的地方。系统会内部启动一个llamafactory-cli api子进程然后通过网关反向代理给你接口完全兼容 OpenAI 格式。启动bashcurl -X POST http://localhost:8000/api/playground/llmfactory/api/start \ -H Content-Type: application/json \ -d {model_path: merged/你的模型_merged, template: qwen}返回json{ api_url: http://你的网关IP:8000/api/playground/llmfactory/v1, status: running }使用完全兼容 OpenAI SDK拿到api_url后你可以直接在代码里像调用 ChatGPT 一样调用你的私有模型pythonimport openai client openai.Client( base_urlhttp://你的网关IP:8000/api/playground/llmfactory/v1, api_keynot-needed ) response client.chat.completions.create( modeldefault, messages[{role: user, content: 你好}] ) print(response.choices[0].message.content)停止用完记得释放显存bashcurl -X POST http://localhost:8000/api/playground/llmfactory/api/stop六、 附加功能任务管理系统会自动记录所有训练和合并任务不怕丢。bash# 查看所有训练任务列表 curl http://localhost:8000/api/playground/llmfactory/train/jobs # 下载训练好的模型文件打包成 zip curl http://localhost:8000/api/playground/llmfactory/train/jobs/{job_id}/download -o my_model.zip七、 总结它比原生 LlamaFactory 强在哪维度原生 LlamaFactory (CLI)llm_AIO 项目 (HTTP 网关)使用方式SSH 进服务器敲命令前端页面 / curl / Python 脚本模型管理手动记录文件夹路径模型 ID 化不暴露服务器绝对路径任务流手动依次执行链式调用训练→合并→启动 API资源控制容易多人冲突导致 OOM显存门禁不足自动拦截产物分发scp 拷来拷去直接提供HTTP 下载链接接口标准无完全兼容OpenAI SDK通过llm_AIO你可以轻松把 LlamaFactory 的炼丹能力集成到自己的应用中甚至做一个可视化的微调平台。赶紧去试试吧

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价