无法通过ngrok在Google Colab中运行Ollama的问题求助
Ollama在Google Colab运行异常排查
问题现象
- 执行
ollama serve时,预期输出包含密钥生成日志:
>>> starting ollama serve Couldn't find '/root/.ollama/id_ed25519'. Generating new private key. Your new public key is: ssh-ed25519 {some key} 2024/01/16 20:19:11 images.go:808: total blobs: 0 2024/01/16 20:19:11 images.go:815: total unused blobs removed: 0 2024/01/16 20:19:11 routes.go:930: Listening on 127.0.0.1:11434 (version 0.1.20)
但实际仅输出:
>>> starting ollama serve time=2024-05-03T07:49:48.426Z level=INFO source=images.go:828 msg="total blobs: 0" time=2024-05-03T07:49:48.426Z level=INFO source=images.go:835 msg="total unused blobs removed: 0" time=2024-05-03T07:49:48.426Z level=INFO source=routes.go:1071 msg="Listening on 127.0.0.1:11434 (version 0.1.33)" time=2024-05-03T07:49:48.427Z level=INFO source=payload.go:30 msg="extracting embedded files" dir=/tmp/ollama3694758245/runners
- 终端执行Ollama命令时抛出错误:
Error: something went wrong, please see the ollama server logs for details
问题原因分析
- 版本迭代差异:你使用的Ollama版本是0.1.33,教程中是0.1.20。新版本默认取消了自动生成SSH密钥的逻辑,这部分日志消失属于正常版本更新后的行为,并非异常。
- Colab终端会话隔离:Ollama服务启动后,新开的终端进程无法连接到已启动的服务,因为Colab的不同终端会话是相互隔离的。
- 临时目录权限问题:日志显示Ollama在提取文件到
/tmp/ollama3694758245/runners,若该临时目录权限不足,会导致后续模型拉取、运行操作失败。
解决步骤
验证服务状态
在启动ollama serve的同一个终端会话里,执行:curl http://127.0.0.1:11434/api/tags若返回
{"models":[]},说明服务正常运行,问题出在终端会话隔离。同一会话内运行命令
在启动服务的终端中,按Ctrl+Z暂停服务,执行bg让服务后台运行,接着直接在该会话内执行ollama pull llama2等命令。指定固定数据目录启动服务
执行以下命令避免临时目录权限问题:mkdir -p ~/.ollama OLLAMA_DATA_DIR=~/.ollama ollama serve之后在同一会话内运行Ollama相关命令。
测试轻量模型
Colab免费实例内存有限,若拉取大模型(如llama2:70b)会触发内存溢出导致服务崩溃。先尝试拉取轻量模型测试,比如:ollama pull qwen:0.5b
内容的提问来源于stack exchange,提问作者p10
相关产品推荐
相关产品推荐

