搭建本地人工智能框架LocalAI
作者:小教学发布时间:2023-09-24分类:程序开发学习浏览:76
什么是 LocalAI
LocalAI
是一个用于本地推理的,与 OpenAI API
规范兼容的 REST API
。它允许您在本地使用消费级硬件运行 LLM
(不仅如此),支持与 ggml
格式兼容的多个模型系列。不需要 GPU
。
最吸引老苏的有两点,一个是不需要 GPU
,另一点上可以使用消费级硬件,所以准备搭一个试试,至于后续用来干什么,到时候再说
官方倒是提供了很多示例,比较常见的是机器人,比如:Discord bot
、Slack bot
或者 Telegram bot
安装
在群晖上以 Docker 方式安装。
镜像下载
官方没有在 docker hub
上发布镜像,而是发布到了 quay.io
用 SSH
客户端登录到群晖后,依次执行下面的命令
这个版本是 cpu
版本,如果你有 gpu
,可以下载支持 cuda
的版本;
# 新建文件夹 localai 和 子目录
mkdir -p /volume1/docker/localai/models
# 进入 localai 目录
cd /volume1/docker/localai
# 拉取镜像
docker pull quay.io/go-skynet/local-ai:latest
镜像文件比较大(大约 13G
),如果拉不动,也可以试试 docker
代理网站:https://dockerproxy.com/,但是会多几个步骤
# 如果拉不动的话加个代理
docker pull quay.dockerproxy.com/go-skynet/local-ai:latest
# 重命名镜像(如果是通过代理下载的)
docker tag quay.dockerproxy.com/go-skynet/local-ai:latest quay.io/go-skynet/local-ai:latest
# 删除代理镜像(如果是通过代理下载的)
docker rmi quay.dockerproxy.com/go-skynet/local-ai:latest
下载完成后,可以在 映像
中找到
docker-compose 安装
将下面的内容保存为 docker-compose.yml
文件
version: '3.6'
services:
api:
image: quay.io/go-skynet/local-ai:latest
container_name: localai
ports:
- 8668:8080
volumes:
- ./models:/models:cached
environment:
- MODELS_PATH=/models
command: ["/usr/bin/local-ai" ]
然后执行下面的命令
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
从日志可以看到,和 Serge
一样,需要 AVX2
指令兼容的 CPU
模型文件
如果你运行过 Serge
,原来下载的 gpt4all.bin
文件是可以直接用的,因为 LocalAI
与 llama.cpp
支持的模型兼容
否则的话,需要自己下模型文件
老苏把 gpt4all.bin
文件放在了阿里云盘: https://www.aliyundrive.com/s/GQqs39iipya
Open LLM
基准测试中表现最佳的模型列表排行榜:https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
请记住,与 LocalAI
兼容的模型必须以 ggml
格式进行量化
老苏目前只测试了 gpt4all.bin
,所以没法给大家提供指导意见,不要问我下哪个模型。
当然,LocalAI
是支持多模型文件的,你可以根据需要下载多个模型文件
关于模型这块,可以看官方文档:https://localai.io/models/
运行
如果你在浏览器中直接输入 http://群晖IP:8668
,会返回 404
错误
{"error":{"code":404,"message":"Cannot GET /","type":""}}
因为 LocalAI
提供的是 REST API
接口,而不是网页。所以有 2
种方式来测试验证我们安装的服务是否成功,一种是使用 API
调试工具,另一种是用命令行
API 工具
这类工具很多,例如: Postman
、Apifox
、ApiPost
等等,具体用什么关系不大,因为基本上主要功能是差不多的,老苏目前是用的是 Apifox
- 打开应用程序并创建一个新的请求
- 在请求的
URL
字段中输入:http://192.168.0.197:8668/v1/completions
- 设置请求方法为
POST
- 在请求头部 (
Headers
) 部分中添加一个新的头部,键为Content-Type
,值为application/json
- 在请求体 (
Body
) 部分中选择raw
选项,并将下面的JSON
数据复制粘贴到请求体中:
{
"model": "gpt4all.bin",
"prompt": "how old are you?",
"temperature": 0.7
}
- 确认您的请求已设置正确后,点击发送按钮以发送请求。
其中:
model
:指定要使用的特定语言模型;prompt
:用于指定生成文本的起始提示或开头文本。也就是你要提的问题;temperature
:用于控制生成文本的多样性。temperature
值越高,生成的文本越随机和多样化,但可能会牺牲一些准确性。相反,temperature
值越低,生成的文本越保守和一致,更加符合模型的训练数据;
现在来聊个天,比如 how old are you?
看看支不支持中文聊天?
提问只要修改 prompt
后面的内容,回答看 text
后面的内容;
命令行
如果你不会 API
工具,用命令行也是可以的,用 SSH
客户端登录到群晖后,执行
curl http://192.168.0.197:8668/v1/completions -H "Content-Type: application/json" -d '{
"model": "gpt4all.bin",
"prompt": "how old are you?",
"temperature": 0.7
}'
返回的结果在 https://www.json.cn
格式化之后
{
"object":"text_completion",
"model":"gpt4all.bin",
"choices":[
{
"index":0,
"finish_reason":"stop",
"text":"I'm sorry, but as an AI language model, I don't have a physical age. However, I was trained on large amounts of data and have been continually updated with new information since then."
}
],
"usage":{
"prompt_tokens":0,
"completion_tokens":0,
"total_tokens":0
}
}
即便是同样的问题,每次的答复也是有区别的
{
"object":"text_completion",
"model":"gpt4all.bin",
"choices":[
{
"index":0,
"finish_reason":"stop",
"text":"I'm sorry, but as an AI language model I do not have a specific age. However, I was trained on vast amounts of data from a variety of sources, including news articles and books. I was trained on this data to understand and generate natural language text."
}
],
"usage":{
"prompt_tokens":0,
"completion_tokens":0,
"total_tokens":0
}
}
小结
虽然老苏用的同一个模型文件,但是感觉上 LocalAI
比 Serge
要快一些,当然也可能是因为 618
升级了内存的缘故
参考文档
go-skynet/LocalAI: 🤖 Self-hosted, community-driven, local OpenAI-compatible API. Drop-in replacement for OpenAI running LLMs on consumer-grade hardware. Free Open Source OpenAI alternative. No GPU required. LocalAI is an API to run ggml compatible models: llama, gpt4all, rwkv, whisper, vicuna, koala, gpt4all-j, cerebras, falcon, dolly, starcoder, and many other
地址:https://github.com/go-skynet/LocalAI
LocalAI :: LocalAI documentation
地址:https://localai.io/
🖼️ 模型库 :: LocalAI 文档
地址:https://localai.io/models/
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版