[特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南

06-01 1389阅读

🚀 实践步骤概览

今天我们要在MAC上完成一个完整的AI项目闭环:

  1. 微调一个大模型 → 2. 导出模型并部署 → 3. 暴露API给web后端 → 4. 前端展示


🛠️ 微调模型准备

核心配置

  • 框架:LLama-Factory 🏭

  • 算法:LoRA (低秩适应) 🧠

  • 基座模型:deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B (来自HuggingFace)


    📥 第一步:下载LLama Factory

    # 如果下载失败的话,可以手动下载压缩包
    git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
    cd LLaMA-Factory
    # 下载依赖包
    pip install -e ".[torch,metrics]"
    # 检验是否安装成功
    llamafactory-cli version
    # 启动webui
    llamafactory-cli webui

    💡 小贴士:部署成功后会自动弹出localhost:7860的页面哦!


    🧩 基座模型下载

    曲折经历:原本想用huggingface-cli命令下载,但多次尝试失败后,我选择了手动下载...

    mkdir Hugging-Face
    # 将下载的模型放在该目录下
    1. 指定模型路径

    2. 点击加载按钮

    3. 等待模型加载完成


    📚 准备微调数据

    参考LLama-Factory的身份训练数据模板,替换{{name}}和{{author}}:

    [{
        "instruction": "你好",
        "input": "",
        "output": "您好,我是 {{name}},一个由 {{author}} 开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
    },
    {
        "instruction": "你好",
        "input": "",
        "output": "您好,我是 {{name}},一个由 {{author}} 打造的人工智能助手,请问有什么可以帮助您的吗?"
    }]

    关键操作:

    1. 创建magic_conch.json文件放在LLama-Factory/data下

    2. 在dataset_info.json中添加配置:

    "magic_conch": {"file_name": "magic_conch.json"},

    ⚙️ 微调参数设置与执行

    微调完成后:

    [特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南
    (图片来源网络,侵删)
    1. 在chat界面卸载模型

    2. 选择检查点重新导入

      [特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南
      (图片来源网络,侵删)
    3. 测试提问"我是谁",验证微调效果


    📦 导出完整模型

    mkdir -p Models/deepseek-r1-1.5b-merged

    🔍 技术说明:LoRA只是低秩矩阵,调整了部分权重,需要合并导出完整模型

    [特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南
    (图片来源网络,侵删)

    在UI上:

    1. 选择export(导出)

    2. 选择导出设备为auto

    3. 设置导出路径

    4. 点击导出按钮


    🌐 创建FastAPI接口

    from fastapi import FastAPI
    from transformers import AutoModelForCausalLM, AutoTokenizer
    import torch
    ​
    app = FastAPI()
    # 模型路径
    model_path = "/Users/xxx/deepseek/Models/deepseek-r1-1.5b-merged"
    # 加载 tokenizer (分词器)
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    # 加载模型并移动到可⽤设备(GPU/CPU)
    device = "cuda" if torch.cuda.is_available() else "cpu"
    model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
    ​
    @app.get("/generate")
    async def generate_text(prompt: str):
       inputs = tokenizer(prompt, return_tensors="pt").to(device)
       outputs = model.generate(inputs["input_ids"], max_length=150)
       generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
       return {"generated_text": generated_text}
    ​
    if __name__ == '__main__':
       import uvicorn
       uvicorn.run(app,host='localhost',port=8060)

    ☕ Java后端调用示例

    关键代码(完整项目见GitHub):

    @RestController
    @RequestMapping(value = "/chat")
    public class ChatController {
    ​
        @Autowired
        private ChatService chatService;
    ​
        @RequestMapping("/generate")
        @ResponseBody
        public Result generate(@RequestParam String prompt) {
            // 参数校验和异常处理
            try {
                String res = chatService.callAiForOneReply(prompt);
                return Result.success().setData(res);
            } catch (Exception e) {
                return Result.error();
            }
        }
    }
    @Service
    public class ChatServiceImpl implements ChatService {
        
        @Autowired
        private RestTemplate restTemplate;
        
        public String callAiForOneReply(String prompt) {
            String url = String.format("%s/generate?prompt=%s", 
                          aiServiceConfig.getBaseUrl(), prompt);
            GenerateResponse response = restTemplate.getForObject(url, GenerateResponse.class);
            return response != null ? response.getGenerated_text() : "";
        }
    }

    🎉 大功告成!

    现在你已经完成了:

    1. 模型微调

    2. 模型导出

    3. API服务搭建

    4. 后端集成

    下一步:可以开始设计炫酷的前端界面啦!🚀

    💬 遇到问题?欢迎在评论区交流讨论~

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码