我希望有一种方法可以更新所有已下载的模型。目前我必须单独拉取每个模型。
v8wbuo2f1#
你可以通过以下方式更新所有模型:
#!/bin/bash ollama list | tail -n +2 | awk '{print $1}' | while read -r model; do ollama pull $model done
omtl5h9j2#
See #2179
yuvru6vn3#
另一个选项(awk 变体依赖,但应该在Mac和Linux上运行大多数流行的awk变体):
awk
ollama list | awk -F: 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'
解释:ollama list - 列出所有模型,包括标题行和“reviewer”模型(无法更新)。
ollama list
-F :
NR > 1
&&
!/reviewer/
reviewer
system("ollama pull "$1)
ollama pull <model>
$1
要使用标签拉取,只需删除 -F: :
-F:
ollama list | awk 'NR>1 && !/reviewer/ {system("ollama pull "$1)}'
zkure5ic4#
要使用标签拉取,只需删除 -F::
这不适用于非“默认”模型。我使用的是具有Q8_0量化的模型,而这个“脚本”仅更新“默认”模型(通常是Q4_0)
50few1ms5#
@lorenzo0932 这就是我添加第二个命令的原因,它将模型名称与标签一起使用,应该适用于您的情况。
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。
4xrmg8kj7#
你可以执行以下命令:
`docker exec -it ollama /bin/bash` 然后 `apt update && apt install original-awk` 最后运行任意一个命令
2w3kk1z58#
如果你想在Windows中实现这个功能,你可以将以下代码添加到PowerShell配置文件中:
ollama list | Select-Object -Skip 2 | ConvertFrom-String | % {Write-Host -BackgroundColor DarkRed 'updating' $_.p1 'model' ; ollama pull $_.p1}
在PowerShell重新加载后使用ollama-update。
ollama-update
8条答案
按热度按时间v8wbuo2f1#
你可以通过以下方式更新所有模型:
omtl5h9j2#
See #2179
yuvru6vn3#
另一个选项(
awk
变体依赖,但应该在Mac和Linux上运行大多数流行的awk变体):解释:
ollama list
- 列出所有模型,包括标题行和“reviewer”模型(无法更新)。awk
:-F :
- 将字段分隔符设置为“:”(这样我们可以在不带标签的情况下捕获模型名称 ollama3:latest)。NR > 1
- 跳过第一行(标题行)。&&
- “and”关系在这些标准之间。!/reviewer/
- 过滤掉reviewer
模型。system("ollama pull "$1)
- 将运行一个系统命令:ollama pull <model>
,其中模型是逐行的,这应该为每个找到的$1
(第一列用冒号分隔)单独运行。要使用标签拉取,只需删除
-F:
:zkure5ic4#
另一个选项(
awk
变体依赖,但应该在Mac和Linux上运行大多数流行的awk变体):解释:
ollama list
- 列出所有模型,包括标题行和“reviewer”模型(无法更新)。awk
:-F :
- 将字段分隔符设置为“:”(这样我们可以在不带标签的情况下捕获模型名称 ollama3:latest)。NR > 1
- 跳过第一行(标题行)。&&
- “and”关系在这些标准之间。!/reviewer/
- 过滤掉reviewer
模型。system("ollama pull "$1)
- 将运行一个系统命令:ollama pull <model>
,其中模型是逐行的,这应该为每个找到的$1
(第一列用“:”分隔)单独运行。要使用标签拉取,只需删除
-F:
:这不适用于非“默认”模型。我使用的是具有Q8_0量化的模型,而这个“脚本”仅更新“默认”模型(通常是Q4_0)
50few1ms5#
@lorenzo0932 这就是我添加第二个命令的原因,它将模型名称与标签一起使用,应该适用于您的情况。
wgx48brx6#
我认为人们提出的想法和评论都很棒。然而......如果有一个拉姆达(ollama)可以拉取所有的拉姆达更新模型,或者类似的,那就太好了。
有人知道如何使用拉姆达(ollama)Docker镜像实现这个功能吗?
逐个更新许多模型非常困难,而且Docker镜像似乎没有awk。
4xrmg8kj7#
你可以执行以下命令:
2w3kk1z58#
如果你想在Windows中实现这个功能,你可以将以下代码添加到PowerShell配置文件中:
在PowerShell重新加载后使用
ollama-update
。