README.md 4.1 KB
Newer Older
wangkx1's avatar
init  
wangkx1 committed
1
2
# 基于DCU开源代码适配Ollama

wangkx1's avatar
wangkx1 committed
3
DCU上 v0.3.9 ollama 和 ollama 官方保持一致。
wangkx1's avatar
wangkx1 committed
4
5


wangkx1's avatar
wangkx1 committed
6
教程见: [./tutorial_ollama/01-ollama_open-webui.md](./tutorial_ollama/01-ollama_open-webui.md)
wangkx1's avatar
wangkx1 committed
7
8


wangkx1's avatar
init  
wangkx1 committed
9
10
## 适配步骤

wangkx1's avatar
wangkx1 committed
11
工程地址:http://developer.hpccube.com/codes/wangkx1/ollama_dcu.git
wangkx1's avatar
init  
wangkx1 committed
12
13
14
15

### **1. 拉取工程, 根据readme解压构建ollama的压缩文件;**

```bash
wangkx1's avatar
wangkx1 committed
16
git clone http://developer.hpccube.com/codes/wangkx1/ollama_dcu.git -b v0.3.9
wangkx1's avatar
init  
wangkx1 committed
17
18
19

cd ollama_dcu

wangkx1's avatar
wangkx1 committed
20
tar -xvf ollama.tar
wangkx1's avatar
wangkx1 committed
21
cp -r /opt/hyhal ./
wangkx1's avatar
init  
wangkx1 committed
22
23
24
tar -zxvf cmake-3.29.3.tgz

```
wangkx1's avatar
wangkx1 committed
25
### **2. 执行如下命令, 开始构建镜像;**
wangkx1's avatar
init  
wangkx1 committed
26
27
28
29

```bash
# sudo docker build -t <镜像名字> .  # ollama_k100ai 可以更改为自己想要的镜像名字
# 构建涉及到大规模的代码编译, 时间预计花费15分钟左右
wangkx1's avatar
wangkx1 committed
30
31
32
33

# sudo docker build -t <自定义的镜像名字> .

sudo docker build -t ollama_k100ai_v0.3.9 .
wangkx1's avatar
init  
wangkx1 committed
34
35
```

wangkx1's avatar
wangkx1 committed
36
### **3. 构建成功,查看镜像**
wangkx1's avatar
init  
wangkx1 committed
37
38
39
40
41

```bash
(base) sugon@ailab:~$ sudo docker images
[sudo] password for sugon: 
REPOSITORY                                        TAG                                   IMAGE ID       CREATED              SIZE
wangkx1's avatar
wangkx1 committed
42
ollama_k100ai_v0.3.9                              latest                                b60143c747ea   About a minute ago   20.2GB
wangkx1's avatar
init  
wangkx1 committed
43
44
```

wangkx1's avatar
wangkx1 committed
45
### **4. 进入容器**
wangkx1's avatar
init  
wangkx1 committed
46

wangkx1's avatar
wangkx1 committed
47
```bash
wangkx1's avatar
init  
wangkx1 committed
48

wangkx1's avatar
wangkx1 committed
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
docker run -id \
    --name ${CONTAINER_NAME} \
    --shm-size=32G \
    --ipc=host \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    --network=host \
    --privileged \
    --device=/dev/kfd \
    --device=/dev/mkfd \
    --device=/dev/dri \
    -e OLLAMA_HOST=0.0.0.0:11434 \
    -v /opt/hyhal:/opt/hyhal \
    ollama_k100ai_v0.3.9:latest \
    /bin/bash
```
wangkx1's avatar
init  
wangkx1 committed
66
67


wangkx1's avatar
wangkx1 committed
68
### **5. 启动 ollama**
wangkx1's avatar
init  
wangkx1 committed
69
70
71
72
73
74
75
76
77
78
79
80
81


<font color=red>**注意:**</font>


<font color=red>**设置关键环境变量步骤,只需要设置一次即可:**</font>

```bash

# 前提,确保已经进入容器

vim ~/.bashrc, 键盘输入 i

wangkx1's avatar
wangkx1 committed
82
83
# 不指定的话, 无法在其他机器调用 ollama 服务
# export OLLAMA_HOST="0.0.0.0:11434"
wangkx1's avatar
init  
wangkx1 committed
84

wangkx1's avatar
wangkx1 committed
85
86
87
# 如果有迁移的本地模型仓库, 需要增加环境变量
# /local—model-path 建议从容器外映射到容器内
# export OLLAMA_MODELS=/local—model-path
wangkx1's avatar
init  
wangkx1 committed
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

切换至英文输入法, 键盘输入: Esc 后, 输入 wq + enter , 保存退出;
激活环境变量:  source ~/.bashrc
```


<font color=red>**建议启动ollama容器的方法:**</font>

在终端执行:

`ollama serve &`


说明:

- 命令末尾使用`空格 + &`结尾, 直接将启动的ollama设置到后台执行, 如果需要停止 ollama 服务, 进入容器后, 执行 `pkill ollama`
wangkx1's avatar
wangkx1 committed
104
### **6. ollama 拉取模型**
wangkx1's avatar
init  
wangkx1 committed
105
106
107
108
109
110

ollama 模型仓: https://ollama.com/library

<font color=red>**建议ollama拉取模型的方法:**</font>

- 前提: 
wangkx1's avatar
wangkx1 committed
111
    1. 确保当前处于容器之中, 可以参考[4. 进入容器](#4-进入容器) 确认自己进入容器
wangkx1's avatar
init  
wangkx1 committed
112
113
114
115
116
117
118
119
    2. 确保 ollama serve 命令已经执行;

- 运行命令:  `ollama pull llava`

- 说明: `ollama pull <model-name:tag>`
   - `<model-name:tag>` 可以从 https://ollama.com/library 参考;


wangkx1's avatar
wangkx1 committed
120
### **7. 运行模型**
wangkx1's avatar
init  
wangkx1 committed
121
122
123
 

前提: 
wangkx1's avatar
wangkx1 committed
124
   1. 确保当前处于容器之中, 可以参考[4. 进入容器](#4-进入容器) 确认自己进入容器
wangkx1's avatar
init  
wangkx1 committed
125
126
127
128
   2. 确保 ollama serve 命令已经执行;

ollama 执行`run`命令, 会自动拉取模型

wangkx1's avatar
wangkx1 committed
129
#### 7.1 ollama 运行对话大模型 llama3
wangkx1's avatar
init  
wangkx1 committed
130
131
132
133
134


运行命令:  `ollama run llama3`


wangkx1's avatar
wangkx1 committed
135
#### 7.2 ollama 运行多模态大模型 llava
wangkx1's avatar
init  
wangkx1 committed
136
137
138
139
140

运行命令:  `ollama run llava`

对话过程中可以输入`本地图像的绝对路径`,多模态大模型会对图片内容自动进行一个描述

wangkx1's avatar
wangkx1 committed
141
### **8. 自定义模型**
wangkx1's avatar
init  
wangkx1 committed
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

我们可以利用下载到本地的GGUF模型文件,创建一个Modelfile模型描述文件给ollama使用。 

文件名称: llama3-zh.mf

文件内容:

---

FROM ./xxx.gguf

---

FROM 后面的内容是 GGUF模型文件 的路径,创建好模型描述文件后,我们使用ollama命令行工具即可将模型注册到本地:

ollama create llama3-zh -f ./xxx.mf


此时我们就可以使用`ollama list``ollama run`等命令操作这个模型了



wangkx1's avatar
wangkx1 committed
164
### **9. ollama + open-webui**
wangkx1's avatar
init  
wangkx1 committed
165
166


wangkx1's avatar
wangkx1 committed
167
见: [./tutorial_ollama/01-ollama_open-webui.md](./tutorial_ollama/01-ollama_open-webui.md)