大数跨境
0
0

使用 OpenLLM 运行 ChatGLM、Llama 等任意大语言模型(LLM)

使用 OpenLLM 运行 ChatGLM、Llama 等任意大语言模型(LLM) 数翼
2023-08-15
0
导读:今天介绍这个工具(OpenLLM),可以很好的屏蔽 LLM 的底层逻辑,实际使用的时候比直接手写 Trans

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

文章内容:

  • • OpenLLM 介绍

  • • 安装、运行、本地和远程接口调用和部署(ChatGLM2为例)

  • • 如何运行 Llama 2

  • • 部署说明

介绍

一句话介绍:OpenLLM 是可用于在生产中操作大型语言模型 (LLM) 的开放平台。使用 OpenLLM 可以轻松微调、服务、部署和监控任何大语言模型。

也就是说,借助 OpenLLM,您可以使用任何开源大语言模型运行推理,部署到云端或本地,并构建强大的 AI 应用程序。

OpenLLM 有如下特点:

🚂 最先进的LLM:内置支持广泛的开源LLM和模型运行时,包括Llama 2StableLMFalconDollyFlan-T5ChatGLMStarCoder等。

🔥灵活的 API:使用一个命令通过 RESTful API 或 gRPC 为 LLM 提供服务,通过 WebUI、CLI、我们的 Python/Javascript 客户端或任何 HTTP 客户端进行查询。

⛓️ 自由构建:对 LangChainBentoML 和 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 ---


【声明】内容源于网络
0
0
数翼
专注 AIGC 人工智能知识传播和实践
内容 228
粉丝 0
数翼 专注 AIGC 人工智能知识传播和实践
总阅读29
粉丝0
内容228