前言
近两年AIGC
发展的非常迅速,从刚开始的只有ChatGPT
到现在的很百家争鸣。从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化,还有模型的使用方式。大模型使用的门槛越来越低,甚至现在每个人都可以在自己的电脑上运行模型。今天我们要说的就是大模型工具中的佼佼者Ollama
,并演示如何通过C#
来使用Ollama
。
Ollama
Ollama
是一个开源的大语言模型(LLM)服务工具,它允许用户在本地PC环境快速实验、管理和部署大型语言模型。它支持多种流行的开源大型语言模型,如 Llama 3.1
、Phi 3
、Qwen 2
、GLM 4
等,并且可以通过命令行界面轻松下载、运行和管理这些模型。Ollama
的出现是为了降低使用大型语言模型的门槛,是让大型语言模型更加普及和易于访问。一言以蔽之就是Ollama让使用模型更简单
。无论是CPU
或是GPU
都可以,算力高的话推理速度更快,算力不足的话推理的慢,而且容易胡言乱语。
安装
Ollama
的安装方式常用的有两种,一种是去官网下载,另一种是去GitHub下载,可以选择对应的系统版本进行下载
- 官网首页直接下载 https://ollama.com/
- Github Relase下载 https://github.com/ollama/ollama/releases
我的是Windows操作系统,所以直接下载一路Next就可以,默认安装在C盘
无法更改,强迫症的话可以通过mklink
做链接,但是自动更新之后还是在C盘
。自动升级这一块不用太担心,联网的情况,如果有新版本Ollama
会推送更新。
安装完成之后可以修改常用的环境变量
- 通过
OLLAMA_MODELS
环境变量设置模型下载的位置,默认是在C盘
,可以换成其他地址。 - 通过
OLLAMA_HOST
设置Ollama
服务监听的端口,默认的是11434
。
安装完成之后通过version
查看,如果显示版本号则安装成功。
ollama --version
比较常用的指令不多,也很简单
ollama list
列出本地下载的模型ollama ps
查看正在运行的模型ollama pull 模型标识
下载模型到本地,比如我要下载qwen2 7b
则使用ollama pull qwen2:7b
ollama run 模型标识
运行模型,如果已下载则直接运行,如果没下载则先下载再运行。比如我要运行qwen2 7b
可以直接运行ollama run qwen2:7b
也可以将本地已有的GGUF
模型导入到Ollama
中去,操作也很简单。
- 编写一个名为
Modelfile
的文件,写入以下内容
FROM 模型路径/qwen2-0_5b-instruct-q8_0.gguf
- 通过
Ollama
创建模型
ollama create qwen2:0.5b -f Modelfile
- 运行刚创建的模型
ollama run qwen2:0.5b
需要注意的是运行7B
至少需要8GB
的内存或显存,运行13B
至少需要16GB
内存或显存。我电脑的配置信息如下
型号: 小新Pro16 AI元启
CPU: AMD Ryzen 7 8845H
内存: 32.0 GB
AMD Ryzen 7 8845H
内置NPU
,整体算力还可以, 运行运行13B
及以下的模型没太大问题。当然这种级别参数大小的模型不会是一个无所不能的模型,这种量级的模型运行成本相对较低,适合做一些特定场景的推理任务。如果需要无所不能的模型建议还是直接使用ChatGPT
这种商业模型。
命令启动
下载模型完成之后可以测试运行,通过cmd
运行指令,比如我运行起来qwen2:7b
模型
这种方式比较简单,只能是文字对话的方式而且没有样式,简单粗暴。
接口访问
Ollama
提供服务的本质还是http
接口,我们可以通过http接口的方式来调用/api/generate
接口
curl http://localhost:11434/api/generate -d '{
"model": "qwen2:7b",
"prompt": "请你告诉我你知道的天气有哪些?用json格式输出",
"stream": false
}'
model
设置模型的名称prompt
提示词stream
设置为false
要求不要流式返回
因为是一次性返回所有内容,所以需要等待一会,如果需要流式输出可以设置为true
。等待一会后接口返回的信息如下所示
{
"model": "qwen2:7b",
"created_at": "2024-09-04T06:13:53.1082355Z",
"response": "```json\n{\n \"常见天气\": [\n {\n \"类型\": \"晴\",\n \"描述\": \"天空无云或有少量高薄云,日间阳光充足。\",\n \"符号\": \"☀️\"\n },\n {\n \"类型\": \"多云\",\n \"描述\": \"大部分天空被云层覆盖,但能见蓝天,太阳时隐时现。\",\n \"符号\": \"
标签:Console,C#,ollama,模型,LLMs,var,new,Ollama
From: https://www.cnblogs.com/wucy/p/18400124/csharp-ollama