使用Ollama也有一些时间。从小白阶段,只懂按照命令行运行。到现在会自己从抱抱脸选择官方没有的模型自己进行导入。甚至创建局域网内部的服务器,使用应用调用Ollama的API。是时候总结一下Ollama本地运行大模型的一些技巧了。
运行方式
终端运行
新手一般会使用
ollama serve
启动Ollama,并使用ctrl+c结束运行。
以服务方式运行
我们还可以使用服务的方式运行Ollama。这样Ollama在系统启动之后就会在后台调用,可以随时调用。
brew services start ollama
需要注意的是,如果你是了此种方式。那么每次ollama升级之后,需要使用
brew services restart ollama
重新启动Ollama服务。
服务局域网
默认情况下,Ollama只会关注localhost的11434端口,因此只能从本机访问。局域网的其它电脑无法使用。我们可以修改设置,然后重启Ollama服务。这样局域网内的其它电脑就都可以使用Ollama了。
launchctl setenv OLLAMA_HOST "0.0.0.0"
brew services restart ollama
我们可以这个命令,查看Ollama运行的状态
lsof -i -P | grep ollama
如果你看到的是这个,就证明成功了
ollama 602 zhaoxin 3u IPv6 0xb435894e8a5320f 0t0 TCP *:11434 (LISTEN)
如果你想固定上面的设置。那么就需要修改/opt/homebrew/opt/ollama/homebrew.mxcl.ollama.plist
文件,为它添加:
<key>EnvironmentVariables</key>
<dict>
<key>OLLAMA_HOST</key>
<string>0.0.0.0</string>
</dict>
然后停止Ollama服务,并重新开启。注意,我发现用restart不行。必须先stop,然后重新start。不然重启之后,就还是只有localhost。
brew services stop ollama
brew services start ollama
https://github.com/ollama/ollama/blob/main/docs/faq.md
https://github.com/ollama/ollama/issues/3581
模型选择
模型的选择首选是基于功能。不同的模型擅长的领域不同。比如某些模型不支持特定的语言,某些模型具备识别图片的能力,有些模型更擅长编程等。
其次就是版本的选择。总的来说,就是越小的模型,运行时的反应越快,但是同一个模型,越大的模型的输出结果越好。因此,我们需要要在结果准确性和推理速度中作出权衡。一般来说,如果你的电脑只有8GB内存。那么你也就只能选择7B以下的模型,默认模型能跑就不错了。而如果你有16GB内存,那么你最高可以运行13B的模型。而7B模型,也可以选择参数更高的版本比如7B-4bit-K_M之类的。它会标准的标准的4bit性能要好一些。
导入模型
Ollama是llama.cpp的。它支持所有gguf格式模型文件。因此我们在抱抱脸上搜索模型名+gguf,就能下载Ollama官网没有的模型。然后可以通过创建Modefile文件的方式进行导入。格式就是:
FROM gguf文件地址
然后执行
ollama create 模型名 -f Modefile
等一会,这个模型就被导入Ollama了并能使用了。
API调用
下面这段只有程序员需要。
仿OpenAI调用
Ollama支持OpenAI的API的兼容调用方式。这样可以更好复用代码。不过这种方式调用目前只支持chat api的调用。并且不支持Vision。
因此如果你使用下面这两个API的时候,还是需要Ollam的自有API。
ListModels调用
https://github.com/ollama/ollama/blob/main/docs/api.md#list-local-models
Vision调用
https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion