本地运行(Linux-CPU)llama2-chinese大模型

概述

通过ollama来安装llama相关的模型非常方便,也很容易对各个模型进行管理。本文介绍如何通过ollama来安装llama2-chinese模型,或则llama相关的其他模型。

我的环境:16C32G服务器,CPU,无GPU。

下载并安装ollama
curl -fsSL https://ollama.com/install.sh | sh
下载llama-chinese

先从这个模型列表页面查看ollama支持哪些模型。然后执行一下命令:

$ ollama pull llama2-chinese

查看已经下载的模型列表:

$ ollama list

注意:像镜像管理一样,会在模型后面添加版本,我的模型列表如下:

$ ollama list
NAME                    ID              SIZE    MODIFIED    
llama2:latest           78e26419b446    3.8 GB  5 weeks ago
llama2-chinese:latest   cee11d703eee    3.8 GB  5 weeks ago
mistral:latest          61e88e884507    4.1 GB  4 hours ago

而其中的latest就是只最新的版本。

通过命令行来和大模型对话

通过ollama run命令可以访问某一个大模型,并和它进行对话。命令如下:

$ ollama run llama2-chinese
>>> 天为什么会 这么蓝?

难道是因为它不知道自己的缘由,

或者不知道天空中有那么多梦想和理想?

充满了一份无限的神奇力量,

蓝天子,你的美丽是整个世界的珍宝。

但通过以上回答可以看出,llama2-chinese的回答并不是太好。

多行输入

可以通过"“” “”"在命令行客户端中输入多行内容。例如:

>>> """Hello,
... world!
... """
启动REST服务

可以通过以下命令来启动ollama的rest api服务:

$ ollama serve
通过REST API来访问llama2-chinese大模型

1.配置远程访问

默认ollam服务绑定在127.0.0.1的ip地址上,这样远程是没法访问的。要支持远程访问需要修改环境变量。

在文件/etc/systemd/system/ollama.service中添加或者修改Environment参数的值。

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/home/david/anaconda3/bin:/home/david/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/david/anaconda3/bin"


[Install]
WantedBy=default.target
  1. 通过REST API来访问llama-chinese大模型

通过以上设置后,可以通过命令netstat查看以下11434端口的绑定的ip地址。要是0.0.0.0的话,就可以远程访问了。客户端的测试代码如下:

import ollama
from ollama import Client
import time

def hello_test():
  print("start send request to llama ...")
  client = Client(host='http://127.0.0.1:11434')
  response = client.chat(model='llama2-chinese', messages=[
    {
      'role': 'user',
      'content': '天为什么这么蓝?',
    },
  ])

  print(response['message']['content'])


def main():
  hello_test()
# res = client.generate()

#### run main
if __name__ == '__main__':
    main()

总结

通过ollama来管理大模型非常方便,有点像对docker的管理。

参考资料
  • https://github.com/ollama/ollama
  • https://ollama.com/

更多推荐