微信扫码
与创始人交个朋友
我要投稿
Ollama是一个开源框架,专门设计用于在本地运行大型语言模型。它的主要特点是将模型权重、配置和数据捆绑到一个包中,从而优化了设置和配置细节,包括GPU使用情况,简化了在本地运行大型模型的过程。Ollama支持macOS和Linux操作系统,并且已经为Windows平台发布了预览版。
Ollama的一个重要优势是其易用性。安装过程简单,例如在macOS上,用户可以直接从官网下载安装包并运行。对于Windows用户,官方推荐在WSL 2中以Linux方式使用命令安装。安装完成后,用户可以使用命令行工具来下载和运行不同的模型。
Ollama还提供了对模型量化的支持,这可以显著降低显存要求。例如,4-bit量化可以将FP16精度的权重参数压缩为4位整数精度,从而大幅减小模型权重体积和推理所需显存。这使得在普通家用计算机上运行大型模型成为可能。
此外,Ollama框架还支持多种不同的硬件加速选项,包括纯CPU推理和各类底层计算架构,如Apple Silicon。这使得Ollama能够更好地利用不同类型的硬件资源,提高模型的运行效率。
GitHub:https://github.com/ollama/ollama
支持的模型:
Ollama supports a list of models available on ollama.com/library
Here are some example models that can be downloaded:
Model | Parameters | Size | Download |
---|---|---|---|
Llama 2 | 7B | 3.8GB | ollama run llama2 |
Mistral | 7B | 4.1GB | ollama run mistral |
Dolphin Phi | 2.7B | 1.6GB | ollama run dolphin-phi |
Phi-2 | 2.7B | 1.7GB | ollama run phi |
Neural Chat | 7B | 4.1GB | ollama run neural-chat |
Starling | 7B | 4.1GB | ollama run starling-lm |
Code Llama | 7B | 3.8GB | ollama run codellama |
Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
Llama 2 13B | 13B | 7.3GB | ollama run llama2:13b |
Llama 2 70B | 70B | 39GB | ollama run llama2:70b |
Orca Mini | 3B | 1.9GB | ollama run orca-mini |
Vicuna | 7B | 3.8GB | ollama run vicuna |
LLaVA | 7B | 4.5GB | ollama run llava |
Gemma | 2B | 1.4GB | ollama run gemma:2b |
Gemma | 7B | 4.8GB | ollama run gemma:7b |
Note: You should have at least 8 GB of RAM available to run the 7B models, 16 GB to run the 13B models, and 32 GB to run the 33B models.
安装后到哪里找各种文件的位置等各种问题:
macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:\Users\<username>\.ollama\models
问题详情请看FAQ:
https://github.com/ollama/ollama/blob/main/docs/faq.md
Linux安装及服务启停等命令详情:
ollama/docs/linux.md at main · ollama/ollama
Mistral-7B是一个在2023年9月发布的大型语言模型,拥有大约73亿参数。它在各种测试集上的表现均优于Llama2-13B模型,并且在大多数测试集上的表现也超过了Llama1-34B模型。Mistral-7B特别擅长处理代码相关的任务,其性能接近Codellama-7B,同时在非代码类的测试集上也表现良好。这个模型使用了分组查询注意力(GQA)机制来提高推理速度,并采用滑动窗口注意力(SWA)机制来处理更长的文本序列,从而以较小的显存代价实现这一功能。Mistral-7B基于Apache 2.0协议开源,允许商业使用、修改和分发。
Gemma-7B是谷歌在Gemini项目下推出的一种大型语言模型。这个模型的特点是它有两种不同的版本:基础版和经过指令优化的版本。基础版(7B参数)适用于消费级GPU和TPU,而指令优化版本(7B参数)则针对GPU和TPU的高效部署。Gemma模型基于谷歌的Gemini技术,旨在满足不同硬件平台的需求,并提供了2B(20亿)参数和7B(70亿)参数两种规模的版本。
Gemma-7B模型属于自然语言处理领域,并且与问题回答任务相关。这个模型于2024年2月21日发布,其预训练文件大小为14GB。Gemma-7B模型的最高支持的上下文长度为2K,并且其模型参数数量大约为70亿。关于Gemma-7B的开源和商用授权情况,它遵循Gemma Terms of Use,提供了免费商用授权。
Linux自动安装很简单,直接执行:
curl -fsSL https://ollama.com/install.sh | sh
即可,手动麻烦一点,请参考:https://github.com/jmorganca/ollama/blob/main/docs/linux.md
执行以下命令:
ollama pull mistral
ollama pull gemma:7b
分别下载mistral和gemma:7b。下载可以到默认的模型目录(/usr/share/ollama/.ollama/models)查看文件
运行模型命令
ollama run mistral
ollama run gemma:7b
在启动后mistral 查看 nvidia-smi
发现显存占用不多,我的16G卡可以同时启动Mistral和Gemma7B
命令行直接运行:
curl http://localhost:11434/api/chat -d '{
"model": "mistral",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
Mistrial:
import requests
import json
def send_message_to_ollama(message, port=11434):
url = f"http://localhost:{port}/api/chat"
payload = {
"model": "mistral",
"messages": [{"role": "user", "content": message}]
}
response = requests.post(url, json=payload)
if response.status_code == 200:
response_content = ""
for line in response.iter_lines():
if line:
response_content += json.loads(line)["message"]["content"]
return response_content
else:
return f"Error: {response.status_code} - {response.text}"
if __name__ == "__main__":
user_input = "why is the sky blue?"
response = send_message_to_ollama(user_input)
print("Ollama's response:")
print(response)
返回结果:
Gemma:7B
import requests
import json
def send_message_to_ollama(message, port=11434):
url = f"http://localhost:{port}/api/chat"
payload = {
"model": "gemma:7b",
"messages": [{"role": "user", "content": message}]
}
response = requests.post(url, json=payload)
if response.status_code == 200:
response_content = ""
for line in response.iter_lines():
if line:
response_content += json.loads(line)["message"]["content"]
return response_content
else:
return f"Error: {response.status_code} - {response.text}"
if __name__ == "__main__":
user_input = "why is the sky blue?"
response = send_message_to_ollama(user_input)
print("Ollama's response:")
print(response)
返回结果:
大家觉得哪个好?
Ollama模型默认存储在:
macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:\Users\<username>\.ollama\models
因为我这个目录空间不大,需要移到其他目录。同时因为我需要从其他服务器访问ollama服务,所以需要将host设置成0.0.0.0。
按照帮助介绍,这需要修改参数:
Setting environment variables on Linux
If Ollama is run as a systemd service, environment variables should be set using systemctl
:
Edit the systemd service by calling systemctl edit ollama.service
. This will open an editor.
For each environment variable, add a line Environment
under section [Service]
:
[Service] Environment="OLLAMA_HOST=0.0.0.0"
Save and exit.
Reload systemd
and restart Ollama:
systemctl daemon-reload
systemctl restart ollama
具体参考
ollama/docs/faq.md at main · ollama/ollama
我就直接在“/etc/systemd/system/ollama.service”增了2行:
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_MODELS=/app/models/ollama"
然后通过
sudo systemctl status ollama.service
如果有问题可以通过:
journalctl -xeu ollama.service
查看错误日志。
因为主要使用中文,所以后续换成了qwen系列的模型。
看文档MetaGPT是支持Ollama的。修改~/.metagpt/config2.yaml
# Full Example: https://github.com/geekan/MetaGPT/blob/main/config/config2.example.yaml
# Reflected Code: https://github.com/geekan/MetaGPT/blob/main/metagpt/config2.py
llm:
api_type: 'ollama'
base_url: 'http://127.0.0.1:11434/api'
api_key: 'EMPTY'
model: 'qwen:7b-chat'
能跑起来,只是4bit量化后的Qwen:7B还是太弱了。跑MetaGPT基本任务都不会成功。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-05-28
2024-04-12
2024-04-25
2024-05-14
2024-08-13
2024-07-18
2024-05-06