今天介绍这个工具(OpenLLM),可以很好的屏蔽 LLM 的底层逻辑,实际使用的时候比直接手写 Transformer 要方便太多了。而且集成了远程 API 的访问,同时可以和 LangChain 结合,可以作为生产服务的 LLM 后端使用。

文章内容:
• OpenLLM 介绍
• 安装、运行、本地和远程接口调用和部署(ChatGLM2为例)
• 如何运行 Llama 2
• 部署说明
介绍
一句话介绍:OpenLLM 是可用于在生产中操作大型语言模型 (LLM) 的开放平台。使用 OpenLLM 可以轻松微调、服务、部署和监控任何大语言模型。
也就是说,借助 OpenLLM,您可以使用任何开源大语言模型运行推理,部署到云端或本地,并构建强大的 AI 应用程序。
OpenLLM 有如下特点:
🚂 最先进的LLM:内置支持广泛的开源LLM和模型运行时,包括Llama 2,StableLM,Falcon,Dolly,Flan-T5,ChatGLM,StarCoder等。
🔥灵活的 API:使用一个命令通过 RESTful API 或 gRPC 为 LLM 提供服务,通过 WebUI、CLI、我们的 Python/Javascript 客户端或任何 HTTP 客户端进行查询。
⛓️ 自由构建:对 LangChain、BentoML 和 Hugging Face 的一流支持,使您可以通过将 LLM 与其他模型和服务组合来轻松创建自己的 AI 应用程序。
🎯 简化部署:自动生成 LLM 服务器 Docker 映像或通过 ☁️ BentoCloud部署为无服务器端点。
🤖️ 生成自己的 LLM:微调任何法学硕士以满足你的需求 LLM.tuning()
如何使用
首先还是 pip 安装:
pip install openllm
如果想使用清华大学的 ChatGLM 或者 ChatGLM 2,需要安装 OpenLLM 的变种:
pip install "openllm[chatglm]"
然后验证一下安装成果:
$ openllm -h
Usage: openllm [OPTIONS] COMMAND [ARGS]...
██████╗ ██████╗ ███████╗███╗ ██╗██╗ ██╗ ███╗ ███╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║██║ ██║ ████╗ ████║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║██║ ██║ ██╔████╔██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║██║ ██║ ██║╚██╔╝██║
╚██████╔╝██║ ███████╗██║ ╚████║███████╗███████╗██║ ╚═╝ ██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚══════╝╚═╝ ╚═╝
An open platform for operating large language models in production.
Fine-tune, serve, deploy, and monitor any LLMs with ease.
...
启动LLM服务器
要启动 LLM 服务器,要使用 openllm start. 例如,要启动 OPT 服务器::
openllm start opt
我们用 ChatGLM2 测试,指定模型型号的端口:
openllm start chatglm --model-id=THUDM/chatglm2-6b --port=3600
如果机器硬件不够,可以指定量化:
openllm start chatglm --model-id=THUDM/chatglm2-6b --quantize int8 --port=3600
启动成功,访问 http://127。0.0.1:3600 可以看到:
ChatGLM 架构 支持的模型 ID 如下:
•
thudm/chatglm-6b•
thudm/chatglm-6b-int8•
thudm/chatglm-6b-int4•
thudm/chatglm2-6b•
thudm/chatglm2-6b-int4
Embedding
可以 openllm embed 命令进行量化:
> openllm embed --endpoint http://localhost:3600 "I like to eat apples" -o json
{
"embeddings": [
0.006569798570126295,
-0.031249752268195152,
-0.008072729222476482,
0.00847396720200777,
-0.005293501541018486,
...<many embeddings>...
-0.002078012563288212,
-0.00676426338031888,
-0.002022686880081892
],
"num_tokens": 9
}
或者使用 Python SDK 调用:
import openllm
client = openllm.client.HTTPClient("http://localhost:3600")
client.embed("I like to eat apples")
集成 LangChain
安装
pip install langchain[llms]
本地模型
可以使用 OpenLLM 本地直接启动模型调用(不需要刚刚的openllm start):
from langchain.llms import OpenLLM
llm = OpenLLM(model_name="llama", model_id='meta-llama/Llama-2-7b-hf')
llm("What is the difference between a duck and a goose? And why there are so many Goose in Canada?")
远程交互
当然也支持远程调用,这样你就可以在服务器上启动 openllm start,然后在任意客户端访问。
使用 langchain.llms.OpenLLM 类来与远程 OpenLLM 服务器交互,通过指定其 URL 来连接:
from langchain.llms import OpenLLM
llm = OpenLLM(server_url='http://xx.xx.xx.1:3600', server_type='grpc')
llm("What is the difference between a duck and a goose? And why there are so many Goose in Canada?")
其他集成
还可以和 Transformers 代理集成,用的不多,我就不介绍了。
部署
可以通过构建 Bento 或者 容器运行。
使用如下命令构建容器:
bentoml containerize <name:version>
当然最方便的是使用 BentoCloud 运行,如果使用了 BentoCloud ,应该很熟悉部署操作的,不再赘述了。
使用 Llama 2
安装 llama 变体
pip install "openllm[llama]"
启动 Llama 2
OpenLLM 支持的模型 ID 如下:
- meta-llama/Llama-2-70b-chat-hf
- meta-llama/Llama-2-13b-chat-hf
- meta-llama/Llama-2-7b-chat-hf
- meta-llama/Llama-2-70b-hf
- meta-llama/Llama-2-13b-hf
- meta-llama/Llama-2-7b-hf
- NousResearch/llama-2-70b-chat-hf
- NousResearch/llama-2-13b-chat-hf
- NousResearch/llama-2-7b-chat-hf
- NousResearch/llama-2-70b-hf
- NousResearch/llama-2-13b-hf
- NousResearch/llama-2-7b-hf
- openlm-research/open_llama_7b_v2
- openlm-research/open_llama_3b_v2
- openlm-research/open_llama_13b
- huggyllama/llama-65b
- huggyllama/llama-30b
- huggyllama/llama-13b
- huggyllama/llama-7b
所以你可以启动:
openllm start llama --model-id=meta-llama/Llama-2-7b-hf --port=3600
我之前就下载过模型,所以启动很快,如果第一次用,可能要下载模型下载很久。
最后
如果是个人使用,目前为止还是 ChatGPT、Bard、Claude 这样的商业服务效果更好, 但是你要确定绑定开源生态,或者使用自己的模型做应用,那么基于 OpenLLM 开发有很大的灵活性。
--- END ---

