一.引言
身处2024年,大模型技术从底层模型到AI应用都卷的要命,我们可以说是幸运的,也可以是幸福的,当然,学习的路上,不停的追赶,必定是疲惫的。分享一些丝滑的大模型技术栈内的项目,让大家疲惫并快乐着。
今天要讲的是一个大模型推理服务框架-Ollama,对比的还有Xinference、OpenLLM、LocalAI,从丝滑角度而言(这里特别强调一下,我所讲的丝滑,指的是众所周知的网络环境下,学习、部署、应用等环节,坑最少,最易上手),Ollama>=Xinference>LocalAI>OpenLLM。今天重点将Ollama,其他框架另起篇幅。
二.一行代码完成Ollama本地部署
这里由衷推荐docker部署,一行代码搞定
docker run -d --gpus=all -v /yourworkspaces/Ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker参数:
-d:后台运行
--gpus=all:使用所有的gpu
-v /xxx/ollama:/root/.ollama:-v是目录挂载参数,“:”前后指将container目录/root/.ollama挂载至本地目录/xxx/ollama上
-p 11434:11434:-p是端口映射参数,“:”前指宿主机对外端口,“:”后指container服务端口
--name:container启动后的名称,启动后docker stop,docker restart均要接这个名称,如果未制定随机生成一个
ollama/ollama:docker hub库中发行商及项目,实际地址为https://hub.docker.com/r/ollama/ollama
执行docker命令后,会从docker hub库中pull镜像,大约30秒左右完成container部署
docker ps查看container状态:
CONTAINER ID:随机生成的容器ID
IMAGE:container启动依赖的镜像,这里是ollama/ollama
COMMAND:container启动后自动执行的命令,这里是/bin/ollama serve
CREATED:启动时间
STATUS:服务了多长时间
PORTS:端口映射,0:0:0:0:11434指container内端口,11434/tcp指宿主机端口
浏览器输入宿主机ip比如123.123.123.123:11434,页面出现如下提示即为启动成功。
三.一行代码使用Ollama部署大语言模型推理服务
还是一行代码,比如部署mistral
docker exec -it ollama ollama run mistral
仅需要大概1分钟,ollama会从自己的库中将模型pull至本地,万兆网卡下达100MB/s,跟modelscope速度相当。
四.推理服务测试
1.终端命令行运行
如图,直接对话即可
2.curl运行
generate补全:
curl http://123.123.123.123:11434/api/generate -d '{ "model": "mistral", "prompt":"who are you?","stream":false}'
返回结果:
chat对话:
curl http://123.123.123.123:11434/api/chat -d '{ "model": "mistral", "messages": [ { "role": "user", "content": "why is the sky blue?" } ],"stream":false}'
返回结果:
3.dify平台:模型供应商添加Ollama
五.总结
由于现实工作较忙,只能抽下班时间将工作中实操过的内容进行简要记录,首先是作为个人笔记怕过一段时间忘记,其次是以输出强化输入的学习方法将知识分享给大家的同时强化自己的理解,本文有3个地方由于时间关系放到后面的文章详细说明。
1、通过Ollama部署自定义模型;
2、关于docker:我认为这是学习大模型技术必备的工具,开源项目层出不穷,对于自己愿意深入了解的可以用conda+pip的方式逐步安装,对于工具型的框架,如果只是为了拓宽知识广度,最高效的方式还是通过docker或者docker compose先跑起来。后面会用更多的篇幅介绍docker;
3、 dify平台:一个开源的AI原生应用开发平台,大幅提升AI智能体开发效率,与FastGPT类似,但感觉要比FastGPT好用得多