AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Ollama是一个开源框架,专门设计用于在本地运行大型语言模型
发布日期:2024-04-23 06:30:55 浏览次数: 2889


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:

ModelParametersSizeDownload
Llama 27B3.8GBollama run llama2
Mistral7B4.1GBollama run mistral
Dolphin Phi2.7B1.6GBollama run dolphin-phi
Phi-22.7B1.7GBollama run phi
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
Llama 2 13B13B7.3GBollama run llama2:13b
Llama 2 70B70B39GBollama run llama2:70b
Orca Mini3B1.9GBollama run orca-mini
Vicuna7B3.8GBollama run vicuna
LLaVA7B4.5GBollama run llava
Gemma2B1.4GBollama run gemma:2b
Gemma7B4.8GBollama 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

1.3 Mistral-7B

Mistral-7B是一个在2023年9月发布的大型语言模型,拥有大约73亿参数。它在各种测试集上的表现均优于Llama2-13B模型,并且在大多数测试集上的表现也超过了Llama1-34B模型。Mistral-7B特别擅长处理代码相关的任务,其性能接近Codellama-7B,同时在非代码类的测试集上也表现良好。这个模型使用了分组查询注意力(GQA)机制来提高推理速度,并采用滑动窗口注意力(SWA)机制来处理更长的文本序列,从而以较小的显存代价实现这一功能。Mistral-7B基于Apache 2.0协议开源,允许商业使用、修改和分发。

1.4 Gemma-7B

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,提供了免费商用授权。

2,Ollama安装过程

安装

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

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模型默认存储在:

  • 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:

  1. Edit the systemd service by calling systemctl edit ollama.service. This will open an editor.

  2. For each environment variable, add a line Environment under section [Service]:
    [Service] Environment="OLLAMA_HOST=0.0.0.0"

  3. Save and exit.

  4. 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系列的模型。

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基本任务都不会成功。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询