ollama 更新所有已下载模型的方法

pgvzfuti  于 6个月前  发布在  其他
关注(0)|答案(8)|浏览(210)

我希望有一种方法可以更新所有已下载的模型。目前我必须单独拉取每个模型。

v8wbuo2f

v8wbuo2f1#

你可以通过以下方式更新所有模型:

#!/bin/bash

ollama list | tail -n +2 | awk '{print $1}' | while read -r model; do
  ollama pull $model
done
yuvru6vn

yuvru6vn3#

另一个选项(awk 变体依赖,但应该在Mac和Linux上运行大多数流行的awk变体):

ollama list | awk -F: 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'

解释:
ollama list - 列出所有模型,包括标题行和“reviewer”模型(无法更新)。

awk :
  • -F : - 将字段分隔符设置为“:”(这样我们可以在不带标签的情况下捕获模型名称 ollama3:latest)。
  • NR > 1 - 跳过第一行(标题行)。
  • && - “and”关系在这些标准之间。
  • !/reviewer/ - 过滤掉 reviewer 模型。
  • system("ollama pull "$1) - 将运行一个系统命令:ollama pull <model> ,其中模型是逐行的,这应该为每个找到的 $1 (第一列用冒号分隔)单独运行。

要使用标签拉取,只需删除 -F: :

ollama list | awk 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'
zkure5ic

zkure5ic4#

另一个选项(awk 变体依赖,但应该在Mac和Linux上运行大多数流行的awk变体):

ollama list | awk -F: 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'

解释:ollama list - 列出所有模型,包括标题行和“reviewer”模型(无法更新)。

awk :
  • -F : - 将字段分隔符设置为“:”(这样我们可以在不带标签的情况下捕获模型名称 ollama3:latest)。
  • NR > 1 - 跳过第一行(标题行)。
  • && - “and”关系在这些标准之间。
  • !/reviewer/ - 过滤掉 reviewer 模型。
  • system("ollama pull "$1) - 将运行一个系统命令:ollama pull <model>,其中模型是逐行的,这应该为每个找到的 $1 (第一列用“:”分隔)单独运行。

要使用标签拉取,只需删除 -F::

ollama list | awk 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'

这不适用于非“默认”模型。我使用的是具有Q8_0量化的模型,而这个“脚本”仅更新“默认”模型(通常是Q4_0)

50few1ms

50few1ms5#

@lorenzo0932 这就是我添加第二个命令的原因,它将模型名称与标签一起使用,应该适用于您的情况。

wgx48brx

wgx48brx6#

我认为人们提出的想法和评论都很棒。然而......如果有一个拉姆达(ollama)可以拉取所有的拉姆达更新模型,或者类似的,那就太好了。
有人知道如何使用拉姆达(ollama)Docker镜像实现这个功能吗?

docker exec ollama ollama list | awk -F: 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'
sh: line 1: ollama: command not found

逐个更新许多模型非常困难,而且Docker镜像似乎没有awk。

4xrmg8kj

4xrmg8kj7#

你可以执行以下命令:

`docker exec -it ollama /bin/bash`
然后
`apt update && apt install original-awk`
最后运行任意一个命令
2w3kk1z5

2w3kk1z58#

如果你想在Windows中实现这个功能,你可以将以下代码添加到PowerShell配置文件中:

ollama list | Select-Object -Skip 2 | ConvertFrom-String | % {Write-Host -BackgroundColor DarkRed 'updating' $_.p1 'model' ; ollama pull $_.p1}

在PowerShell重新加载后使用ollama-update

相关问题