Ollama AI框架模型文件快速转存的解决之道

不同的系统或者不同的环境,需要安装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

真的没看明白。

导入模型报错

后来才知道模型配置文件里有模型文件路径,不一致就会报错。

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.csdn.net/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值