您的位置:首页 > 健康 > 美食 > qq刷赞网站推广软件_百姓国货app下载_网站建设一条龙_郑州seo招聘

qq刷赞网站推广软件_百姓国货app下载_网站建设一条龙_郑州seo招聘

2025/4/23 20:43:14 来源:https://blog.csdn.net/LLM88888888/article/details/147258669  浏览:    关键词:qq刷赞网站推广软件_百姓国货app下载_网站建设一条龙_郑州seo招聘
qq刷赞网站推广软件_百姓国货app下载_网站建设一条龙_郑州seo招聘

🚀 实践步骤概览

今天我们要在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"},

⚙️ 微调参数设置与执行

微调完成后

  1. 在chat界面卸载模型

  2. 选择检查点重新导入

  3. 测试提问"我是谁",验证微调效果


📦 导出完整模型

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

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

在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 uvicornuvicorn.run(app,host='localhost',port=8060)

☕ Java后端调用示例

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

@RestController
@RequestMapping(value = "/chat")
public class ChatController {
​@Autowiredprivate ChatService chatService;
​@RequestMapping("/generate")@ResponseBodypublic 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 {@Autowiredprivate 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. 后端集成

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com