ollama本地大模型微调及多模态图片分析文生图

前言:

本文模型微调以qwen0.5b为例子 本文大模型为容器方式部署

模型部署参考

有显卡的GPU直通docker容器参考

Modelfile参数参考

一. 定制自己的模型

所谓定制模型,就是在使用某个模型作为base模型,然后在该模型上进行定制,下面我们就以qwen2:0.5b作为基础模型进行定制:

1 编写定制规则,即Modelfile文件,内容如下(此处Modelfile位置是容器内/home/Modelfile)

参考编写方式

1
2
3
4
5
6
7
8
9
10

FROM qwen2:7b

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1

# set the system message
SYSTEM """
You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
"""

本文编写方式

1
2
3
4
5
6
7
8
9
10

FROM qwen2:0.5b

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1

# set the system message
SYSTEM """
我是简逸云计算开发的一款超大规模语言模型,我叫ZZNNWN。作为一个AI助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我可以回答各种领域的问题,提供代码示例、解释技术概念、提供建议、创作故事等。请随时告诉我您需要什么帮助或解答的疑问!
"""

2 使用Modelfile来创建定制模型,执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 将模型文件传到容器内
docker cp Modelfile ollama:/home/
# 执行定制
docker exec -it ollama bash
ollama create zznnn -f /home/Modelfile
# 回显
root@f2c1461c054d:/# ollama create zznnn -f /home/Modelfile
transferring model data
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:62fbfd9ed093d6e5ac83190c86eec5369317919f4b149598d2dbb38900e9faef
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:5b6a5a0f6f25365ce741c24c539ea24df8b422c851f9960f327f6157635328f4
using existing layer sha256:b1c932e03beb32c4ab61bb50b2fa06ab1f2ea4e99ee6495670bbe23834dc7d62
creating new layer sha256:e474d9ea6efe1be66cbefd3bbd677d3ab2897d63d03db24418d716f914b2f2e8
writing manifest
success

此时定制成功!

浏览器访问测试效果如下

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/8/image_e1c13b92bd571f0ca7cbd9780a20906c.png

二. 多模态模型的使用

可以识别图片中的信息等 类似于微信的文字识别

首先下载并运行多模态模型llava:

1
2
ollama pull llava:7b
ollama run llava:7b

启动后,输入prompt:使用中文描述下这张图片 ./lecun.png

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/8/image_d693648e8ee7662b66ee8b03cd112196.png

我使用的是这张图片:

图片略….

可以看到,对照片内容的描述基本是符合的,有点不足的是用词不太准确,”颜色”应该是”彩色”,而且还有错别字,”呆着一种微笑的表情”,应该是使用了7B模型的原因,13B模型应该就没这么低级的错误了。

三. Stable-Diffusion接入open-webui实现文生图功能

大佬封装太乙模型参考地址:

https://github.com/soulteary/docker-stable-diffusion-taiyi

官方太乙Taiyi-Stable-Diffusion-1B-Chinese-v0.1模型下载地址需要手动将其下载到本地后映射到docker中为:

IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1 at main (huggingface.co)

网速快的可使用克隆实际无法克隆 此时只能手动点击仓库文件下载:

1
git clone https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1

1.部署docker-compose文件(本文使用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
version: '3.8'

services:
ollama:
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:ollama
container_name: ollama
runtime: nvidia
user: root
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
count: all # 根据需要调整 GPU 的数量
volumes:
- ./ollama:/root/.ollama
ports:
- "11434:11434"
environment:
KEEP_GPUS_TIMEOUT: 40
TZ: Asia/Shanghai
OLLAMA_ORIGINS: "*"
OLLAMA_HOST: "0.0.0.0"
networks:
- tpng


taiyi:
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:taiyi-0.1
container_name: taiyi
restart: always
runtime: nvidia
ipc: host
ports:
- "7860:7860"
volumes:
- ./taiyi:/stable-diffusion-webui/models/Taiyi-Stable-Diffusion-1B-Chinese-v0.1
#- ./webui-user.sh:/stable-diffusion-webui/webui-user.sh
#- ./webui-user.bat:/stable-diffusion-webui/webui-user.bat
environment:
- KEEP_GPUS_TIMEOUT=100
# - CLI_ARGS="--api --listen"
networks:
- tpng

open-webui:
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:open-webui-main
#ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "8080:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
- ./static:/app/backend/static
- ./static_build:/app/build/static
- ./config.py:/app/backend/config.py
- ./index.html:/app/build/index.html
environment:
TZ: Asia/Shanghai
networks:
- tpng

one-api:
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:one-api-latest
container_name: one-api
restart: always
ports:
- "3000:3000"
environment:
- TZ=Asia/Shanghai
volumes:
- ./one-api:/data
networks:
- tpng

volumes:
open-webui:
networks:
tpng:
driver: bridge

备注上方镜像为二次开发版 添加启动太乙模型参数 –api –listen Dockerfile文件如下

1
2
FROM registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:taiyi-0.1
CMD ["python", "webui.py", "--ckpt", "/stable-diffusion-webui/models/Taiyi-Stable-Diffusion-1B-Chinese-v0.1/Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt", "--api", "--listen"]
1
docker build -f ./Dockerfile -t zznn/taiyi .

太乙环境变量参考

https://docs.stablediffusion.cn/?m=Article&a=index&id=1&aid=593327411932692480

本文主要参考

将docker部署太乙文生图完全指南

太乙参数参考

2.集成多个模型

C站:https://civitai.com/images
prompthero:https://prompthero.com/
Majinai:https://majinai.art/index.php
词图:https://www.prompttool.com/NovelAI
Black Lily:http://heizicao.gitee.io/novelai/#/book
Danbooru 标签超市:https://tags.novelai.dev/
AI 词汇加速器:https://ai.dawnmark.cn/
NovelAI 魔导书:https://thereisnospon.github.io/NovelAiTag/

3. 接入open-weui

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/8/image_a885354780318e596eb825fa7c09c333.png

本文参考:

ollama模型微调 (主要参考)

Ollama使用指南【超全版】

大模型LLM微调经验总结&项目更新

一大堆Llama3.1-Chinese正在袭来