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保持同步。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。