进入正文前,先扯点题外话
这两天遇到一个棘手的问题,在用
docker pull
拉取镜像时,会报错:
x509: certificate has expired or is not yet valid
具体是下面👇这样的
root@DS918:/volume2/docker/xiaoya# docker pull alpine:3.18.23.18.2: Pulling from library/alpine
31e352740f53: Already exists
error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/c1/c1aabb73d2339c5ebaa3681de2e9d9c18d57485045a4e311d9f8004bec208d67/data?verify=1713883560-%2F3RhBOCWXsSAz9IO7i8g2LuGRCE%3D": x509: certificate has expired or is not yet valid: current time2024-04-23T21:56:03+08:00 is after 2021-09-30T14:01:15Z
通过
dockerproxy
下载则是正常的
下载
ghcr.io
的镜像也正常
①、网络没问题,另一台机器上下载镜像是正常的
②、检查了证书也没到期,下图是重新生成的证书
③、系统时间也没问题
④、重装过
docker
套件(卸载–>重启–>安装),但问题一直没得到解决
网上找了两天,也没有找到可行的解决方案,有点抓瞎 😂
有遇到过这种情况并解决的朋友,请不吝赐教,感谢!
本文会用到
One API
对
M3E
进行管理和分发
文章传送门: 大模型接口管理和分发系统One API
什么是 M3E ?
M3E
是
Moka Massive Mixed Embedding
的缩写,是一个由
MokaAI
训练并开源的文本嵌入模型。适合使用场景主要是中文,少量英文的情况,其在文本分类和文本检索任务上表现出色,据称在某些任务上超越了
ChatGPT
。
M3E
共有三种模型,各有不同的维度
m3e-small
m3e-base
m3e-large
**什么是嵌入(
Embedding
) ?**
嵌入是一种将单词、短语或整个文档转换为密集向量的技术。每个单词或短语被转换成一组数字,这组数字捕捉了该文本的某些语义特征。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索
m3e-large-api
,选择第一个
stawky/m3e-large-api
,只有一个
latest
版本,双击直接下载。
镜像比较大,如果下载不动,可以用命令行试试从国内阿里源下载
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用netstat-tunlp|grep 端口号
本地端口容器端口
6008
6008
命令行安装
如果你熟悉命令行,可能用
docker cli
更快捷
# 运行容器(国外)docker run -d\--restart unless-stopped \--name m3e-large-api \-p6008:6008 \
stawky/m3e-large-api:latest
# 运行容器(国内)docker run -d\--restart unless-stopped \--name m3e-large-api \-p6008:6008 \
registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
如果你的机器支持
GPU
,可以增加一个选项
--gpus all
,表示启用所有可用的
GPU
资源
# 运行容器(国外)docker run -d\--restart unless-stopped \--name m3e-large-api \--gpus all \-p6008:6008 \
stawky/m3e-large-api:latest
也可以用
docker-compose
安装,将下面的内容保存为
docker-compose.yml
文件
version:'3'services:m3e-large-api:image: stawky/m3e-large-api:latest
#image: registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latestcontainer_name: m3e-large-api
restart: unless-stopped
ports:-"6008:6008"
然后执行下面的命令
# 新建文件夹 m3e-large-api 和 子目录mkdir-p /volume1/docker/m3e-large-api
# 进入 m3e-large-api 目录cd /volume1/docker/m3e-large-api
# 将 docker-compose.yml 放入当前目录# 一键启动docker-compose up -d
运行
在浏览器中输入
http://群晖IP:6008
就能看到主界面
命令行
要验证
API
服务是否正常,除了查看日志
还可以用下面的示例
# 命令行测试curl--location--request POST 'http://<服务地址:端口>/v1/embeddings'\--header'Authorization: Bearer <秘钥>'\--header'Content-Type: application/json'\
--data-raw '{
"model": "<模型>",
"input": ["<问题>"]
}'# 示例curl--location--request POST 'http://192.168.0.197:6008/v1/embeddings'\--header'Authorization: Bearer sk-aaabbbcccdddeeefffggghhhiiijjjkkk'\--header'Content-Type: application/json'\
--data-raw '{
"model": "m3e",
"input": ["laf是什么"]
}'
其中
<服务地址:端口>
:填入http://群晖IP:6008
<秘钥>
:填入默认值sk-aaabbbcccdddeeefffggghhhiiijjjkkk
<模型>
:填入模型名称m3e
<问题>
:填入你想问的问题
如果看到下图这样的返回,就
OK
了
One API
也可以用
One API
进行管理和分发。老苏建议用这种方式
在
One API
中添加新的渠道
- 类型:选择
自定义渠道
Base URL
:填入M3E
的访问地址http://群晖IP:6008
- 名称:例如:
M3E
- 分组:
default
就行 - 模型:输入自定义模型名称,
填入
即可,例如:m3e
,其他服务调用时,需匹配这个模型的名称 - 秘钥:
sk-aaabbbcccdddeeefffggghhhiiijjjkkk
保存之后,一般会测试一下
返回
404
是正常的,
M3E
不是聊天模型,但测试调用的是
chat
接口,所以会失败
到这里,准备工作基本上就完成了,下一篇将正式进入知识库问答系统的搭建
参考文档
moka-ai/m3e-large · Hugging Face
地址:https://huggingface.co/moka-ai/m3e-large
接入 M3E 向量模型 | FastGPT
地址:https://doc.fastai.site/docs/development/custom-models/m3e/
docker部署m3e-large-api无法启动_开发工具-CSDN问答
地址:https://ask.csdn.net/questions/8056249
docker stawky/m3e-large-api internal error · Issue #741 · labring/FastGPT
地址:https://github.com/labring/FastGPT/issues/741
本地部署的m3e-large-api不可用 · Issue #931 · labring/FastGPT
地址:https://github.com/labring/FastGPT/issues/931
版权归原作者 杨浦老苏 所有, 如有侵权,请联系我们删除。