前言

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

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

localai


正文

一、什么是LocalAI

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

二、LocalAI功能

LocalAI有以下主要功能:

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

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

Backend Compatible models Completion/Chat endpoint Audio transcription Embeddings support Token stream support Github Bindings
llama Vicuna, Alpaca, LLaMa yes no yes (doesn’t seem to be accurate) yes https://github.com/ggerganov/llama.cpp https://github.com/go-skynet/go-llama.cpp
gpt4all-llama Vicuna, Alpaca, LLaMa yes no no yes https://github.com/nomic-ai/gpt4all https://github.com/go-skynet/gpt4all
gpt4all-mpt MPT yes no no yes https://github.com/nomic-ai/gpt4all https://github.com/go-skynet/gpt4all
gpt4all-j GPT4ALL-J yes no no yes https://github.com/nomic-ai/gpt4all https://github.com/go-skynet/gpt4all
gpt2 GPT/NeoX, Cerebras yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
dolly Dolly yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
redpajama RedPajama yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
stableLM StableLM GPT/NeoX yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
replit Replit yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
gptneox GPT NeoX yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
starcoder Starcoder yes no no no https://github.com/ggerganov/ggml https://github.com/go-skynet/go-gpt2.cpp
bloomz Bloom yes no no no https://github.com/NouamaneTazi/bloomz.cpp https://github.com/go-skynet/bloomz.cpp
rwkv RWKV yes no no yes https://github.com/saharNooby/rwkv.cpp https://github.com/donomii/go-rwkv.cpp
bert-embeddings bert no no yes no https://github.com/skeskinen/bert.cpp https://github.com/go-skynet/go-bert.cpp
whisper whisper no yes no no https://github.com/ggerganov/whisper.cpp

三、部署LocalAI

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

以下是一段示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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等其他云端模型,适合折腾的人部署。

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


最后

参考文章:

官方项目


声明

本文仅作为个人学习记录。

本文永久记录于区块链博客xlog