ollama 新手,求问哥哥们 2 个问题,找了好多资料还是没弄明白

2025 年 3 月 11 日
 ZimaBlueee

1. 如何单独获取大模型的 modelfile 文件

我的服务器是内网,所以只能手动导入从其他地方下载的模型,然后导入到服务器中。

这个时候就出现一个问题:如果直接从 ollama 下载镜像,会顺带下载 modelfile 文件。

而我模型是自己导入的,每个大模型的 modelfile 文件都不一样,请问有什么单独获取 modelfile 的途径嘛?

2. 怎么部署大模型到指定显卡上

我的服务器有 2 块显卡,现在希望每块显卡都跑一个不同的大模型。

比如,我想让第一块显卡跑 qwen 大模型;第二块显卡跑 deepseek 。怎么如何指定呢?

3595 次点击
所在节点    Local LLM
19 条回复
iSkylar
2025 年 3 月 11 日
1. Modelfile 自定义编写即可,你可以查看一下它的文本规范
2. 查看显卡编号,然后通过使用环境变量指定 GPU 跑大模型,另外也可以选择 docker 容器来指定 GPU
hcr707305003
2025 年 3 月 11 日
huggingface 上面不是有 modelfile 文件吗,可以参考
ZimaBlueee
2025 年 3 月 11 日
@iSkylar 我现在是用 docker 跑的,这是我的配置:
```
services:
ollama:
volumes:
- /opt/models:/root/.ollama
- ./modelfiles:/root/modelfiles
container_name: ollama
tty: true
restart: always
image: ollama/ollama:latest
ports:
- 7013:11434
environment:
- OLLAMA_KEEP_ALIVE=24h
- TZ=Asia/Shanghai
networks:
- ollama-docker
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ["1"]
capabilities: [gpu]
```

我在配置中指定了:device_ids: ["1"],也就是这个容器使用第二块显卡,这里我需要把 1 改成 all 吗?改成 all 的话,还能使用环境变量指定 GPU 嘛,请问是在 modelfile 里指定 GPU 编号嘛?
b821025551b
2025 年 3 月 11 日
ollama show --modelfile modename 一下可以看到,modelfile 文件就是 ollama template +params 放在一起;
一个 ollama 服务貌似只能一个显卡,倒是可以启动多个服务在不同端口上,每个服务用 CUDA_VISIBLE_DEVICES 指定不同显卡。
ZimaBlueee
2025 年 3 月 11 日
@hcr707305003 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
iSkylar
2025 年 3 月 11 日
@ZimaBlueee
1. 里我需要把 1 改成 all 吗?改成 all 的话,还能使用环境变量指定 GPU 嘛?
- 基于 docker 配置 device_ids: ["all"],然后也可以通过环境配置来指定 GPU ,再 env 那里配置,例如 CUDA_VISIBLE_DEVICES=1
2. 在 modelfile 里指定 GPU 编号嘛?
- 不行,Modelfile 是 Ollama 用来定义模型配置的文件(例如模型路径、参数、提示词等),但它无法直接控制 GPU 分配,GPU 分配是由运行时环境( Docker 或系统)决定的。
ZimaBlueee
2025 年 3 月 11 日
@b821025551b 刚看了一下 ollama show --modelfile 还会额外补充信息,比我自己写的 modelfile 内容还要丰富很多
op351
2025 年 3 月 11 日
Ollama 模型直接下载并手动安装的项目
https://github.com/amirrezaDev1378/ollama-model-direct-download
iSkylar
2025 年 3 月 11 日
@ZimaBlueee
3. 很多模型找不到 modelfile ,比如这个: https://huggingface.co/Qwen/QwQ-32B
-从 Hugging Face 下载 GGUF 格式并手动创建 Modelfile
ZimaBlueee
2025 年 3 月 11 日
@iSkylar 明白您的意思,但是环境变量不是只能设置一个嘛?如何在同一个 docker 容器内为 2 个大模型分配各自的显卡呢?

请问是这样操作吗:我部署 A 模型时,先把 CUDA_VISIBLE_DEVICES=0 ;部署 B 模型时,再把 CUDA_VISIBLE_DEVICES=1 。这样不会改变 A 模型的运行显卡吧?
ZztGqk
2025 年 3 月 11 日
走环境变量,就楼上老哥给的 CUDA_VISIBLE…,不想用 docker 可以直接用 serve ,别用 run 就行,把用 run 开的 service 关掉。用 serve 在 linux 上需要手动指定下模型位置,同时配合环境变量和指定不同的端口就可以多卡了。确实难用…
nxforce
2025 年 3 月 11 日
1. ollama 没研究过本地权重文件加载,但 vllm 我知道是可以直接加载本地模型文件的,不用走下载。

2. docker 可以直接指定 gpu 编号给容器 如--gpus "device=0" 分配第一张卡。
ZimaBlueee
2025 年 3 月 11 日
@joyhub2140 如果想分配另一张卡,是需要再开一个新的容器吗?
b821025551b
2025 年 3 月 11 日
@ZimaBlueee #7 你点开 ollama 官网的模型库,实际上就是 template 文件+params 文件+license 文件,把这几个文件下回来拼在一起就是 modelfile 文件; ollama 现在好像不支持启动时传参, 所以用 A 环境变量先启动,再修改后(别忘了 soruce ,或者直接 export )启动 B ,这时不影响已经启动的 A 。
nxforce
2025 年 3 月 11 日
@ZimaBlueee 是的,你可以开多几个容器分配不同的 gpu ,不过要注意端口冲突。
magicZ
2025 年 3 月 11 日
vim start_qwq.sh
CUDA_VISIBLE_DEVICES="0" ./llama.cpp/build/bin/llama-server --model /data/models/qwq-32b/dir/qwq-32b-q4_k_m.gguf -ngl 100 -t 32 --host 0.0.0.0 --port 9000
ZimaBlueee
2025 年 3 月 11 日
谢谢各位的回复,答案基本有了:

1. modelfile 文件需要自己手动编写,这对新手来说主要怕写的不好,怕漏东西或写的不完美。

2. 用 server 启动时指定环境变量来指定 GPU ,或者开 2 个 docker 容器来指定。这里我选择了后者,开 2 个 docker 容器简单好维护。

再次感谢各位的热心回答!
xyfan
2025 年 3 月 11 日
@b821025551b 至少在 win 系统上 ollama 是可以正常同时调用多显卡的,单卡 24G 显存,双卡就能跑 14B-PF16 (29G) 或 70B-Q4M (42G) 的模型
hefish
2025 年 3 月 11 日
1 、huggingface 上有,下载了,然后可以导入到 ollama , 具体 ollama 有官方文档,很方便的。
2 、vllm 支持指定显卡,ollama 好像不支持。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117433

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX