不同的系统或者不同的环境,需要安装Ollama,但是不想重复下载Ollama模型怎么办?
使用tar或zip包转存到.ollama目录
一开始想到的方法,是手工tar -czvf打包模型(连整个模型存盘的路径一起打包),然后cp到新环境下,再tar -xzvf解包。
一般Ollama默认存储模型的目录是~/.ollama/models ,只要把这个目录打包,再到新的机器,还是解压到~/.ollama/models目录,这样启动Ollama,执行ollama run的时候,它自然会到默认目录找到模型,完成我们的Ollama模型快速转存。
但是在实际应用中,有时候会碰到转存失败的情况。比如在windows,并没有把目录放置在默认路径里,那么在windows下打包模型上传到星河社区的数据集里,然后在项目里导入这个数据,然后解包到对应的模型存储目录里,发现即使这样,新环境下也会重新下载模型文件,非常费时费力,尤其是星河社区下载速度并不太快,而Ollama下的模型文件都比较大,deepseek-r1:1.5文件也有1.2G大小,重新下载太浪费时间了!
后来发现,原来需要把配置文件一起传过去才行,而且配置文件里模型文件放置的位置,还需要手工修改一下,才能识别出来。这种方法尽管有些麻烦,但是相比要在星河社区下载几个小时,还是要简单方便很多!
不同操作系统模型转存
以从Windows导入到飞桨星河社区Linux系统为例
首先打包所有文件,最简单的方法是把.ollama目录全部打包,然后到新系统再放到~/.ollama目录。如果这步完成后,新系统里能识别出模型,或者ollama run 的时候不用去下载模型,那么这就算完成了。
如果未转存成功,可以进行如下的注册操作。
在老系统下创建配置文件:
ollama show deepseek-r1:1.5b --modelfile > deepseek-r1_1_5Modelfile
这样就把deepseek-r1:1.5模型的配置存在deepseek-r1_1_5Modelfile这个文件里了。
打开看这个文件,发现它存有模型的地址:
FROM E:\ai\models\blobs\sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc
修改这句话,把这句话修改成目标,也就是星河社区Linux系统里的地址
FROM /home/aistudio/work/.ollama/models/blobs/sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc
注意,windows下和linux的路径间隔符都是不一样的,小心不要写错。
新修改后的文件上传到星河社区环境里,到星河社区新环境下导入模型
./bin/ollama create deepseek-r1:1.5b -f ./deepseek-r1_1_5Modelfile
导入成功
./bin/ollama create deepseek-r1:1.5b -f ./deepseek-r1_1_5Modelfile
gathering model components
copying file sha256:aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc 100%
parsing GGUF
using existing layer sha256:aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc
creating new layer sha256:369ca498f347f710d068cbb38bf0b8692dd3fa30f30ca2ff755e211c94768150
creating new layer sha256:6e4c38e1172f42fdbff13edf9a7a017679fb82b0fde415a3e8b3c31c6ed4a4e4
creating new layer sha256:f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588
writing manifest
success
现在执行模型试试吧
aistudio@jupyter-141218-899262:~/work$ ./bin/ollama run deepseek-r1:1.5b
>>> 你好
⠏
当然在测试阶段使用的cpu环境,结果爆慢,先卡20分钟再出字,后面估计大约10分钟一个字吧。
总结
其实这里是走弯路了。
Ollama转存到不同服务器,只要把Ollama模型存盘路径的models目录cp到新的存盘目录里就行了。
但是如果万一,我说是万一,直接cp了模型文件后,如果ollama没有识别出来,那么就可以使用如下方式:
先在老机器上存模型配置:
ollama show deepseek-r1:1.5b --modelfile > deepseek-r1_1_5Modelfile
如果新机器模型路径跟老机器不一致,那么需要手工修改模型配置文件里的配置,类似:FROM /home/aistudio/work/.ollama/models/blobs/sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc
再到新机器上注册模型即可:
./bin/ollama create deepseek-r1:1.5b -f ./deepseek-r1_1_5Modelfile
调试
查看和参考了这个文档,说实话,没太弄明白
cp模型:ollama模型离线迁移/复制 - 知乎
点击model,然后拷贝这部分 96c415656d37
在blobs文件夹搜索 96c415656d37
真的没看明白。
导入模型报错
后来才知道模型配置文件里有模型文件路径,不一致就会报错。