banner
hughie

hughie

热爱技术的小菜鸟, 记录一下所学所感

LocalAI-自主托管,与OpenAI API规范兼容,支持多种语言模型

前言#

​ 本文简单记录介绍一下 LocalAI。

​ LocalAI 支持自主托管和运行,与 OpenAI API 规范兼容,支持多种模型。

7-localai.png


正文#

一、什么是 LocalAI#

LocalAI 是一个本地 AI API,可以自主托管和运行模型,与 OpenAI API 规范兼容,支持多种模型。

二、LocalAI 功能#

LocalAI 有以下主要功能:

  • 兼容 OpenAI 的 REST API 规范,可以作为本地推理的 OpenAI 替代方案;
  • 支持多个模型系列,如llama.cpp, gpt4all, rwkv.cpp, ggml, whisper.cppbert.cpp
  • 加载一次后,将模型加载到内存中,以获得更快的推断速度;
  • 支持 prompt templates,提供更多的填写选项;
  • 使用 C++ 绑定,以获得更快的推断速度。

下面是官方项目目前支持的模型列表:

BackendCompatible modelsCompletion/Chat endpointAudio transcriptionEmbeddings supportToken stream supportGithubBindings
llamaVicuna, Alpaca, LLaMayesnoyes (doesn't seem to be accurate)yeshttps://github.com/ggerganov/llama.cpphttps://github.com/go-skynet/go-llama.cpp
gpt4all-llamaVicuna, Alpaca, LLaMayesnonoyeshttps://github.com/nomic-ai/gpt4allhttps://github.com/go-skynet/gpt4all
gpt4all-mptMPTyesnonoyeshttps://github.com/nomic-ai/gpt4allhttps://github.com/go-skynet/gpt4all
gpt4all-jGPT4ALL-Jyesnonoyeshttps://github.com/nomic-ai/gpt4allhttps://github.com/go-skynet/gpt4all
gpt2GPT/NeoX, Cerebrasyesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
dollyDollyyesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
redpajamaRedPajamayesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
stableLMStableLM GPT/NeoXyesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
replitReplityesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
gptneoxGPT NeoXyesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
starcoderStarcoderyesnononohttps://github.com/ggerganov/ggmlhttps://github.com/go-skynet/go-gpt2.cpp
bloomzBloomyesnononohttps://github.com/NouamaneTazi/bloomz.cpphttps://github.com/go-skynet/bloomz.cpp
rwkvRWKVyesnonoyeshttps://github.com/saharNooby/rwkv.cpphttps://github.com/donomii/go-rwkv.cpp
bert-embeddingsbertnonoyesnohttps://github.com/skeskinen/bert.cpphttps://github.com/go-skynet/go-bert.cpp
whisperwhispernoyesnonohttps://github.com/ggerganov/whisper.cpp

三、部署 LocalAI#

可以使用 docker-compose 快速启动 LocalAI,也可以通过构建本地镜像来使用 LocalAI。LocalAI 的具体用法可以参考文档Usageexamples中的使用案例。

以下是一段示例代码:

# Clone LocalAI
git clone https://github.com/go-skynet/LocalAI

cd LocalAI

# (optional) Checkout a specific LocalAI tag
# git checkout -b build <TAG>

# Download gpt4all-j to models/
wget https://gpt4all.io/models/ggml-gpt4all-j.bin -O models/ggml-gpt4all-j

# Use a template from the examples
cp -rf prompt-templates/ggml-gpt4all-j.tmpl models/

# (optional) Edit the .env file to set things like context size and threads
# vim .env

# start with docker-compose
docker-compose up -d --build

# Now API is accessible at localhost:8080
curl http://localhost:8080/v1/models
# {"object":"list","data":[{"id":"ggml-gpt4all-j","object":"model"}]}

curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
     "model": "ggml-gpt4all-j",
     "messages": [{"role": "user", "content": "How are you?"}],
     "temperature": 0.9 
   }'

# {"model":"ggml-gpt4all-j","choices":[{"message":{"role":"assistant","content":"I'm doing well, thanks. How about you?"}}]}

四、总结#

LocalAI 可以将本地模型部署成 OpenAI API 的接口形式,可以很方便的集成到目前各种流行的应用当中,避免了个人数据上传 OpenAI 或 Microsoft 等其他云端模型,适合折腾的人部署。

缺点是需要本地硬件足够支持运行这些语言模型。


最后#

参考文章:

官方项目


声明#

本文仅作为个人学习记录。
本文与hblog保持同步。

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.