1,介绍:1.1 Ollama简介Ollama是一个开源框架,专门设计用于在本地运行大型语言模型。它的主要特点是将模型权重、配置和数据捆绑到一个包中,从而优化了设置和配置细节,包括GPU使用情况,简化了在本地运行大型模型的过程。Ollama支持macOS和Linux操作系统,并且已经为Windows平台发布了预览版。 Ollama的一个重要优势是其易用性。安装过程简单,例如在macOS上,用户可以直接从官网下载安装包并运行。对于Windows用户,官方推荐在WSL 2中以Linux方式使用命令安装。安装完成后,用户可以使用命令行工具来下载和运行不同的模型。 Ollama还提供了对模型量化的支持,这可以显著降低显存要求。例如,4-bit量化可以将FP16精度的权重参数压缩为4位整数精度,从而大幅减小模型权重体积和推理所需显存。这使得在普通家用计算机上运行大型模型成为可能。 此外,Ollama框架还支持多种不同的硬件加速选项,包括纯CPU推理和各类底层计算架构,如Apple Silicon。这使得Ollama能够更好地利用不同类型的硬件资源,提高模型的运行效率。 1.2 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. 安装后到哪里找各种文件的位置等各种问题: 问题详情请看FAQ: https://github.com/ollama/ollama/blob/main/docs/faq.md Linux安装及服务启停等命令详情: ollama/docs/linux.md at main · ollama/ollama 1.3 Mistral-7BMistral-7B是一个在2023年9月发布的大型语言模型,拥有大约73亿参数。它在各种测试集上的表现均优于Llama2-13B模型,并且在大多数测试集上的表现也超过了Llama1-34B模型。Mistral-7B特别擅长处理代码相关的任务,其性能接近Codellama-7B,同时在非代码类的测试集上也表现良好。这个模型使用了分组查询注意力(GQA)机制来提高推理速度,并采用滑动窗口注意力(SWA)机制来处理更长的文本序列,从而以较小的显存代价实现这一功能。Mistral-7B基于Apache
2.0协议开源,允许商业使用、修改和分发。 1.4 Gemma-7BGemma-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,提供了免费商用授权。 2,Ollama安装过程安装Linux自动安装很简单,直接执行: curl-fsSLhttps://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 3,调用测试命令测试命令行直接运行: curl http://localhost:11434/api/chat -d '{ "model": "mistral", "messages": [ { "role": "user", "content": "why is the sky blue?" } ] }'
Python代码调用: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)
返回结果: 大家觉得哪个好? 4,修改配置修改存储位置及Host地址Ollama模型默认存储在: 因为我这个目录空间不大,需要移到其他目录。同时因为我需要从其他服务器访问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"
然后通过 sudosystemctlstatusollama.service 如果有问题可以通过: journalctl-xeuollama.service 查看错误日志。 更换模型因为主要使用中文,所以后续换成了qwen系列的模型。 5 整合试用MetaGPT整合看文档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基本任务都不会成功。
|