老铁们,今天咱们来聊聊如何利用 MLflow Deployments 来有效管理大型语言模型(LLM)。这工具牛就牛在,它可以让你们轻松搞定像 OpenAI 和 Anthropic 这种大厂的 LLMs。通过一个统一的接口,这操作可以说是相当丝滑,简化了与这些服务之间的交互。
技术背景介绍
MLflow Deployments 的设计初衷是为了在企业内部顺畅地使用和管理各种 LLM 服务。通过提供一个高阶接口,可以方便地处理与 LLM 相关的请求。这对于需要集成多种 LLM 提供商的团队来说,绝对是一大利器。
原理深度解析
说白了,MLflow Deployments 就是通过在你的工作环境中配置一个配置文件,然后启动一个服务来统一处理 LLM 的请求。这样一来,不论是文本生成还是嵌入操作,只需要一个入口就可以搞定。
实战代码演示
安装与设置
首先,你需要安装 MLflow,并配置其依赖项:
pip install 'mlflow[genai]'
接着,设置 OpenAI 的 API key:
export OPENAI_API_KEY=...
然后,创建一个配置文件,里面包含你的端点配置:
endpoints:
- name: completions
endpoint_type: llm/v1/completions
model:
provider: openai
name: text-davinci-003
config:
openai_api_key: $OPENAI_API_KEY
- name: embeddings
endpoint_type: llm/v1/embeddings
model:
provider: openai
name: text-embedding-ada-002
config:
openai_api_key: $OPENAI_API_KEY
最后,启动部署服务器:
mlflow deployments start-server --config-path /path/to/config.yaml
文本生成示例
import mlflow
from langchain.chains import LLMChain, PromptTemplate
from langchain_community.llms import Mlflow
llm = Mlflow(
target_uri="http://127.0.0.1:5000",
endpoint="completions",
)
llm_chain = LLMChain(
llm=Mlflow,
prompt=PromptTemplate(
input_variables=["adjective"],
template="Tell me a {adjective} joke",
),
)
result = llm_chain.run(adjective="funny")
print(result)
with mlflow.start_run():
model_info = mlflow.langchain.log_model(chain, "model")
model = mlflow.pyfunc.load_model(model_info.model_uri)
print(model.predict([{"adjective": "funny"}]))
嵌入操作示例
from langchain_community.embeddings import MlflowEmbeddings
embeddings = MlflowEmbeddings(
target_uri="http://127.0.0.1:5000",
endpoint="embeddings",
)
print(embeddings.embed_query("hello"))
print(embeddings.embed_documents(["hello"]))
聊天示例
from langchain_community.chat_models import ChatMlflow
from langchain_core.messages import HumanMessage, SystemMessage
chat = ChatMlflow(
target_uri="http://127.0.0.1:5000",
endpoint="chat",
)
messages = [
SystemMessage(
content="You are a helpful assistant that translates English to French."
),
HumanMessage(
content="Translate this sentence from English to French: I love programming."
),
]
print(chat(messages))
优化建议分享
在使用过程中,建议通过代理服务来提升稳定性,尤其是当需要处理大量请求时。代理服务能够有效地管理和调度请求,确保系统的健壮性。
补充说明和总结
我个人一直在用 https://yunwu.ai 提供的一站式大模型解决方案,无缝对接各种 LLMs,极大提高了开发效率。
今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~
—END—