SFT实践

SFT,全称是Supervised Fine-Tuning,监督微调。个人理解就是通过对预计预训练好的大模型做二次训练,让大模型从一个全能型人才转为特定领域的专家,是一个从通才转为专才的过程。举个例子,大模型A在数学微积分方面只能拿到80分,模型幻觉率5%,通过对模型进行微调,理论上是可以让他在微积分方面拿到99分,模型幻觉率0.5%,当然这个过程不是那么简单,里面还需要做很多的优化,影响的因素比如数据集的质量,训练轮次,微调方案选型等等。
在电商或者商业化业务中,尤其是一些问答类的场景,可以通过使用企业内部私有的知识库数据集,对一些基础模型,比如Qwen-8B,进行私有化部署,然后做SFT,最终可以让模型在回答企业特定场景问题的情况下,做到一个相对更加精准的回复。

SFT前的准备

数据准备

SFT,数据质量是关键,最终效果的好坏很大程度上取决于数据质量,整体上,质大于量,一个普通的SFT,大概准备几千条高质量的数据即可,最常见的格式是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"messages": [
{
"role": "system",
"content": "你是一个AI助手"
},
{
"role": "user",
"content": "什么是SFT?"
},
{
"role": "assistant",
"content": "SFT是xxx"
}
],
...
}

这里也可以看看HuggingFace上面的一些优质的数据集。
数据往往分为训练集,验证集和测试集,分别对应日常学习,模拟考试和期末考试

机器准备

我们需要准备有GPU算力的服务器,这里可以用目前主流云平台的一些封装好的能力,还有一种方式是租用GPU,我主要是用autodl这个平台的算力。

实践一下

模型部署

阅读全文

MCP原理解析

MCP,全称是Model Context Protocol,模型上下文协议。他是一种通信协议,约定了AI Agent在使用工具时候的范式。
MCP核心分为三个部分,分别是客户端(Client),服务端(Server)和通信协议(Protocol)

  • 客户端:通常指的是LLM应用,比如Cursor,Trae等等,它负责接收用户输入的指令,并通过模型决策,最终决定什么时候调用工具。
  • 服务端:提供具体工具和数据源的服务端,它负责执行具体的操作动作,以获取模型需要的结果
  • 通信协议:连接Client和Server的标准通信范式(基于JSON-RPC 2.0协议),它约定了双方交互的通信方式,包含如何发现工具,传递参数,返回结果等。

工作流程如下:

  • 注册:Server启动时候,向Client注册自己提供的工具列表和资源列表
  • 调用:Client根据用户需求,通过Protocol向Server发送调用请求
  • 执行:Server端执行工具逻辑(如查询天气,执行代码),并将结果通过Protocol返回给Client端
  • 处理:Client端根据执行结果进行对应结果

客户端通过MCP协议将请求发送到Server,是通过一个标准化,基于JSON-RPC 2.0的远程过程调用机制来实现的,这个过程可以分解为几个关键步骤:

  • 建立连接:Client和Server需要建立一个通信信道,MCP协议不强制规定底层的传输方式,支持多种传输层
    • 标准输入/输出(Stdio):Server作为一个独立的进程启动,Client通过管道与之通信
    • HTTP/SSE:Server作为一个网络服务运行,Client通过HTTP请求或者SSE进行通信,适用于单向通信的场景
    • WebSocket:适用于需要双向实时通信的场景
  • 协议初始化和工具发现:在进行链路通信之后,Client和Server端会进行初始化握手,Server端会将自己的能力告知Client
    • Server端主动发送一个init初始化请求,将自己支持哪些工具和资源告诉Client端
  • 调用流程:当Client端模型决定使用什么工具之后,他会按照协议发送对应的请求

这里也写了一个demo,实现了一些Agent一些技术栈的设计:https://github.com/Peterliang233/agent-chatbox

阅读全文

RAG论文阅读:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

作为RAG领域的经典论文,这篇论文核心讨论了RAG模型,文中提到了RAG-序列模型和RAG-token模型以及其核心原理。同时实验对比了RAG和现有的BERT等在NLP多个任务中的表现,表明了RAG模型的可行性和优越性。接下来,将针对论文核心部分做个人学习总结。

阅读全文