暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GreptimeAI + Xinference 联合方案:高效部署并监控你的 LLM 应用

GreptimeDB 2024-01-23
98


随着人工智能技术的迅速进步,OpenAI 已经崭露头角,成为该领域的领军者之一。它在多种语言处理任务上表现卓越,包括机器翻译、文本分类和文本生成等方面。随着 OpenAI 的兴起,同时涌现的还有许多其他优质的开源大语言模型,比如 Llama,ChatGLM,Qwen 等等,这些优秀的开源模型也可以帮助团队快速地搭建出一个出色的 LLM 应用。


但面对如此多的选择,如何在减少开发成本的同时,能够统一地使用 OpenAI 的接口?如何能高效地持续监控 LLM 应用的运行表现,而又不增加额外的开发复杂度?在这些问题上,GreptimeAI 和 Xinference 提供了切实可行的解决方案。


01

什么是 GreptimeAI



GreptimeAI 构建在开源时序数据库 GreptimeDB 之上,是为大型语言模型(LLM)应用提供的一套可观测性的解决方案,目前已经支持 LangChain 和 OpenAI 的生态。GreptimeAI 使您能够实时全面地了解成本、性能、流量和安全性方面的情况,帮助团队提升 LLM 应用的可靠性。


02

什么是 Xinference



Xinference[1] 是一个专为大型语言模型(LLM)、语音识别模型和多模态模型设计的开源模型推理平台,支持私有化部署。Xinference 提供了与 OpenAI API 兼容的 RESTful API,并集成了 LangChain、LlamaIndex 和 Dify.AI 等第三方开发者工具,便于模型的集成与开发。Xinference 集成了多个 LLM 推理引擎(如 Transformers、vLLM 和 GGML),适用于不同硬件环境, 并支持分布式多机部署,能够在多个设备或机器间高效分配模型推理任务,满足多模型和高可用的部署需要。


03

GreptimeAI 
Xinference 
部署/监控 LLM 应用



接下来,我们将以 Qwen-14B 模型为例,详细介绍如何使用 Xinference 在本地部署和运行模型。这里将展示一个例子,其使用了类似 OpenAI 函数调用(Function Calling)的方式来执行天气查询,并演示了如何利用 GreptimeAI 监控 LLM 应用的使用情况。


注册并获取 GreptimeAI 配置信息
访问 https://console.greptime.cloud 注册服务,并创建 AI 服务,跳转到 AI Dashboard 之后,点击 Setup 页面,获取 OpenAI 的配置信息。
(The example of function calling)


启动 Xinference 模型服务

在本地启动 Xinference 模型服务的方式非常简单,只需要输入如下命令即可:

xinference-local -H 0.0.0.0


Xinference 默认会在本地启动服务,端口默认为 9997。这里省略了在本地安装 Xinference 的过程,可以参考 这篇文章[2] 进行安装。


Web UI 方式启动模型

Xinference 启动之后,在浏览器中输入 http://localhost:9997 来访问 Web UI。

(The steps of Xinference starup)


命令行方式启动模型

我们也可以使用 Xinference 的命令行工具来启动模型,默认 Model UID 是 qwen-chat(后续将通过这个 ID 来访问模型)。

xinference launch -n qwen-chat -s 14 -f pytorch


通过 OpenAI 风格的接口获取天气信息

假设我们有能力通过调用 get_current_weather 函数来获取指定城市的天气信息,参数为 locationformat


配置 OpenAI 以及调用接口
通过 OpenAI 的 Python SDK 访问 Xinference 本地端口,并使用 GreptimeAI 收集数据,使用 chat.completions 接口创建对话,并且通过 tools 来指定刚刚我们定义的函数列表。
from greptimeai import openai_patcher
from openai improt OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:9997/v1",
)
openai_patcher.setup(client=client)

messages = [
    {"role""system""content""你是一个有用的助手。不要对要函数调用的值做出假设。"},
    {"role""user""content""上海现在的天气怎么样?"}
]
chat_completion = client.chat.completions.create(
    model="qwen-chat",
    messages=messages,
    tools=tools,
    temperature=0.7
)
print('func_name', chat_completion.choices[0].message.tool_calls[0].function.name)
print('func_args', chat_completion.choices[0].message.tool_calls[0].function.arguments)


tools 细节
Function calling 函数(工具)列表的定义如下,并且指定了必填字段。
tools = [
    {
        "type""function",
        "function": {
            "name""get_current_weather",
            "description""获取当前天气",
            "parameters": {
                "type""object",
                "properties": {
                    "location": {
                        "type""string",
                        "description""城市,例如北京",
                    },
                    "format": {
                        "type""string",
                        "enum": ["celsius""fahrenheit"],
                        "description""使用的温度单位。从所在的城市进行推断。",
                    },
                },
                "required": ["location""format"],
            },
        },
    }
]


输出如下,可以看到我们通过 chat_completion
得到了 Qwen 模型生成的函数调用:
func_name: get_current_weather
func_args: {"location": "上海", "format": "celsius"}


获取 function call 结果并再次调用接口

这里假设我们用给定的参数调用了 get_current_weather 函数,并已经获取到了结果,将结果和上下文重新发送给 Qwen 模型:

messages.append(chat_completion.choices[0].message.model_dump())
messages.append({
    "role""tool",
    "tool_call_id": messages[-1]["tool_calls"][0]["id"],
    "name": messages[-1]["tool_calls"][0]["function"]["name"],
    "content"str({"temperature""10""temperature_unit""celsius"})
})

chat_completion = client.chat.completions.create(
    model="qwen-chat",
    messages=messages,
    tools=tools,
    temperature=0.7
)
print(chat_completion.choices[0].message.content)


最终结果

Qwen 模型最终将返回显示的响应如下所示:

上海现在的温度是 10 摄氏度。


GreptimeAI 看板

在 GreptimeAI 的 Dashboard 页面,你可以全面且实时地监控基于 OpenAI 接口的所有调用数据,包括了 token、cost、latency、trace 等关键指标。下面展示的是仪表板的 overview 页面:
(The demonstration of GreptimeAI)


04

总结



如果你正在使用开源模型构建 LLM 应用,并希望用 OpenAI 的风格进行 API 调用,那么使用 Xinference 来管理推理模型,配合 GreptimeAI 来监控模型运行情况是个不错的选择。无论是进行复杂的数据分析还是简单的日常查询,Xinference 都能提供强大而灵活的模型管理能力;同时结合 GreptimeAI 的监控功能,你可以更加高效地了解和优化模型的性能和资源消耗。


我们期待你的尝试,并欢迎分享使用 GreptimeAI 和 Xinference 的体验和意见。让我们一起探索人工智能的无限可能性吧!



Reference:

[1] https://github.com/xorbitsai/inference

[2] https://xorbits.cn/blogs/langchain-streamlit-doc-chat




如果你有任何疑问或建议,欢迎扫描下方小助手微信私聊我们~



关于 Greptime

Greptime 格睿科技于 2022 年创立,目前正在完善和打造时序数据库 GreptimeDB,格睿云 GreptimeCloud 和可观测工具 GreptimeAI 这三款产品。


GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生、兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。


GreptimeCloud 基于开源的 GreptimeDB,为用户提供全托管的 DBaaS,能够与可观测性、物联网等领域结合的应用产品结合。利用云提供软件和服务,可以达到快速的自助开通和交付,标准化的运维支持,和更好的资源弹性。


GreptimeAI 是为 LLM 应用量身定制的可观测性解决方案,开发者可以通过该方案全面、深入地了解应用的成本、性能、流量和安全情况,在保证低成本和高性能的同时提供高效可靠的分析能力,同时保留了时序数据库的灵活性。


GreptimeCloud 已正式公测,欢迎关注公众号或官网了解最新动态!


官网:https://greptime.cn/

GitHub: https://github.com/GreptimeTeam/greptimedb

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/


点击下方链接🔗关注 GreptimeDB,了解更多技术干货👇

往期精彩文章:


GreptimeDB 提供 Enterprise 企业版服务,如有需要请联系 info@greptime.com 或添加小助手微信(微信号:greptime).

👇 点击下方阅读原文,立即体验 GreptimeDB!

文章转载自GreptimeDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论