My Little World

本地运行大模型的一种方式

本文仅介绍如何运行大模型
前提:有足够内存

云主机上运行

  1. 创建一个云主机
    使用华为云主机https://developer.huaweicloud.com/space/home, 目前有180hours/年免费使用时长
    登录后
    工作台–配置一个云主机(需要实名认证,微信刷脸)– 点击进入桌面
    注意这里进入的ubantu 系统,操作略有区别
  2. 安装Ollama
    云主机界面右键”Open Terminal Here”,打开命令终端窗口
    执行命令:

    1
    curl -fsSL https://dtse-mirrors.obs.cn-north-4.myhuaweicloud.com/case/0035/install.sh | sudo bash
  3. 创建DeepSeek模型
    借助 Ollama 工具来部署 Deepseek 大模型,部署 deepseek-r1:1.5b 版本,执行命令:

    1
    ollama run deepseek-r1:1.5b

如果需要查看其他模型可直接去官网
点击 任一一个模型名称可进一步看到模型版本和大小

ollama 命令行可以看做是管理大模型的工具
[cli 文档] (https://docs.ollama.com/cli)
ollama run xxx 命令会自行判断模型是否存在,不存在则下载模型后运行
将指定模型运行后就可以和模型进行对话了

  1. 创建Agent智能角色

关闭上面terminal 之后,虚拟环境创建

打开云主机桌面CodeArts IDE for Python
点击新建工程,输入工程名称:Agent,点击创建
左下角选择:管理->设置
在搜索框中输入:activate,找到图中所示,在“Python:Terminal:Activate Environment”选项前方框中点击勾选,保证在终端运行时展示当前指定python 环境
打开终端,前方出现(venv)字样表示创建成功,如果没有请点击“删除”图标关闭终端重新打开一下

升级pip,下载Autogen框架,openai借口

1
2
3
pip install --upgrade pip -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install pyautogen -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install openai -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

新建运行python文件用来装运行代码,配置文件指定模型相关配置供代码使用,提示词文件注入上下文,也是供代码使用

demo.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from autogen import UserProxyAgent, ConversableAgent, config_list_from_json
from openai import models
def main():
with open(r'提示词.txt', encoding='utf-8') as f:
jiudan = f.readlines()
jiudan = str(jiudan)
# Load LLM inference endpoints from an env variable or a file
# 从文件或者环境变量中加载LLM的推理端点
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST.json")
#利用LLM来创建一个Assistant Agent,这个LLM是在上面的配置文件里指定的。
assistant = ConversableAgent("agent", llm_config={"config_list": config_list},system_message=jiudan)
#创建一个用户代理,这个用户代理就代表你,你可以随时加入对话中
user_proxy = UserProxyAgent("user", code_execution_config=False)

#让assistant来开始这个对话,如果用户输入 exit,那么对话就会被终止。
assistant.initiate_chat(user_proxy, message="欢迎来到私人健康助手")
if __name__ == "__main__":
main()

OAI_CONFIG_LIST.json:

1
2
3
4
5
6
7
[
{
"model": "deepseek-r1:1.5b",
"api_key": "testkey",
"base_url": "http://localhost:11434/v1"
}
]

提示词txt:

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
# 角色
你是以为热情的医疗顾问,擅长根据患者的症状推荐合适的资料方案,还能与患者畅谈分享健康知识。让咨询过程充满关怀和专业。
## 技能
### 技能1:推荐治疗方案,直接给出患者一种治疗方案,如果不合适再询问患者具体症状。
1.当患者表明症状时,从已知治疗方案中挑选合适的进行推荐。
2.若不清楚患者症状时,可询问患者具体症状、病史等信息。
3.专注药物治疗推荐:
-对于患者提出的非药物治疗问题(如手术或物理治疗),清始终引导回药物治疗推荐。
-对于和药物治疗无关的问题,请忽略,请始终引导回药物治疗推荐。
只能出现这里面的治疗方案[
{
"名称": "酚麻美敏片",
"主要成分": "对乙酰氨基酚、盐酸伪麻黄碱、氢溴酸右美沙芬、马来酸氯苯那敏",
"适应症": "用于普通感冒或流行性感冒引起的发热、头痛、四肢酸痛、打喷嚏、流鼻涕、鼻塞、咳嗽、咽痛等症状",
"剂量": "成人和12岁以上儿童,一次1 - 2片,每6小时服1次,24小时内不超过4次",
"副作用": "有时有轻度头晕、乏力、恶心、上腹不适、口干、食欲缺乏和皮疹等,可自行恢复",
"注意事项": "用药3 - 7天,症状未缓解,请咨询医师或药师;服用本品期间不得饮酒或含有酒精的饮料;不能同时服用与本品成份相似的其他抗感冒药等",
"适用人群": "成人和12岁以上儿童",
"使用时长": "一般不超过7天",
"颜色": "薄膜衣片,除去包衣后显白色或类白色"
},
{
"名称": "氢溴酸右美沙芬糖浆",
"主要成分": "氢溴酸右美沙芬",
"适应症": "用于干咳,包括上呼吸道感染(如感冒和咽炎)、支气管炎等引起的咳嗽",
"剂量": "口服。成人一次10 - 20毫升,一日3 - 4次",
"副作用": "可见头晕、头痛、嗜睡、易激动、嗳气、食欲缺乏、便秘、恶心、皮肤过敏等,但不影响疗效。停药后上述反应可自行消失",
"注意事项": "用药7天,症状未缓解,请咨询医师;哮喘患者、痰多的患者、肝肾功能不全患者慎用;孕妇及哺乳期妇女慎用等",
"适用人群": "成人",
"使用时长": "一般不超过7天",
"颜色": "棕黄色澄清液体"
},
{
"名称": "氯雷他定片",
"主要成分": "氯雷他定",
"适应症": "用于缓解过敏性鼻炎有关的症状,如喷嚏、流涕、鼻痒、鼻塞以及眼部痒及烧灼感。口服药物后,鼻和眼部症状及体征得以迅速缓解。亦适用于缓解慢性荨麻疹、瘙痒性皮肤病及其他过敏性皮肤病的症状及体征",
"剂量": "成人及12岁以上儿童:一日1次,一次1片(10毫克);2 - 12岁儿童:体重>30公斤:一日1次,一次1片(10毫克);体重≤30公斤:一日1次,一次半片(5毫克)",
"副作用": "常见不良反应有乏力、头痛、嗜睡、口干、胃肠道不适包括恶心、胃炎以及皮疹等。罕见不良反应有脱发、过敏反应、肝功能异常、心动过速及心悸等",
"注意事项": "在做皮肤过敏试验前约48小时应中止使用本品;同时服用酮康唑、大环内酯类抗生素、西咪替丁、茶碱等药物,会提高氯雷他定在血浆中的浓度,应慎用;罕见不良反应有心动过速、心悸、肝酶升高、肝炎及胆红素增加等,应停药并就医等",
"适用人群": "成人及2岁以上儿童",
"使用时长": "根据病情而定,症状缓解后可停药,一般慢性疾病疗程较长",
"颜色": "白色或类白色片"
},
{
"名称": "健胃消食片",
"主要成分": "太子参、陈皮、山药、麦芽(炒)、山楂",
"适应症": "健胃消食。用于脾胃虚弱所致的食积,症见不思饮食、嗳腐酸臭、脘腹胀满;消化不良见上述证候者",
"剂量": "口服,可以咀嚼。成人一次4 - 6片,儿童二岁至四岁一次2片,五岁至八岁一次3片,九岁至十四岁一次4片;一日3次",
"副作用": "尚不明确",
"注意事项": "饮食宜清淡,忌食辛辣、生冷、油腻食物;孕妇及哺乳期妇女慎用;儿童必须在成人监护下使用等",
"适用人群": "各年龄段人群,儿童需在成人监护下使用",
"使用时长": "症状缓解后即可停药",
"颜色": "浅棕黄色的片;气微香,味微甜、酸"
},{
"名称": "硝苯地平缓释片",
"主要成分": "硝苯地平",
"适应症": "各种类型的高血压及心绞痛",
"剂量": "口服。一次10 - 20毫克,一日2次,极量,一次40毫克,一日0.12克",
"副作用": "可能出现的副作用有外周水肿(外周水肿与剂量相关,服用120片/日时发生率为4.8%,服用240片/日则为12.8%)、头晕、头痛、脸红、心悸、乏力、恶心等",
"注意事项": "低血压、严重主动脉瓣狭窄、肝肾功能不全患者慎用;用药期间定期监测血压和心率;避免突然停药,以免引起血压反跳等",
"适用人群": "高血压及心绞痛患者",
"使用时长": "需长期服用,根据血压控制情况调整剂量",
"颜色": "黄色薄膜衣片除去薄膜衣后显黄色"
}
]

保证三者在同一个文件夹下

然后打开CodeArts IDE for Python 终端
执行python demo.py
大模型就可以更准确的回答和提示词相关的问题了

本地运行

在实际自己的电脑笔记本上运行

步骤与上面类似,工具略有不同

  1. 安装ollama, 帮忙下载模型
    下载完成后,可直接在笔记本终端跑ollama 命令 同上
    点击客户端也可以直接提问,前提也是已经有可用大模型model,没有的话,直接选择也是会先下载再运行,
    执行下
    ollama run xxx
    下载一个模型,供open webUI使用

  2. 升级python 到3.11以上,装 open webUI

    1
    pip install open-webui

安装完后运行

1
open-webui serve

访问 http://localhost:8080/
如无法访问,等一会儿再刷新

  1. 模型配置
    可避免建上面云主机的文件,直接定制自己的agent
    在open webUI的界面中选择【工作空间】- 添加模型(版本不同,操作界面不同,进入下面页面即可)

后记:没必要在本地部署,尤其本地,内存消耗巨大,尤其是模型本身体积巨大

其他问题记录

  1. 决策分析式AI 与 生成式AI 区别
    二者本质的不同是从底层开始演绎的算法不同,而且最终生成的产物应用阈也不同
    决策分析式AI
    通过对历史数据的学习,辅助我们进行一些决策,应用阈更加垂类,
    与数据挖掘,机器学习是一个时代的概念,相关算法设计决策树,KNN, 集成算法,朴素贝叶斯,关联规则,推荐算法
    生成式AI
    通过对大量历史数据进行学习,帮助我们进行内容创作,这些内容通常都是全新的,应用阈更加宽泛,通用,涉及的算法有卷积神经网络等

  2. 模型压缩方法 ????
    量化:模型参数的量化,降低数据精度,将模型参数从浮点数转换为整数,从而减少存储空间和计算量。
    结构化剪枝:剔除模型中无意义或冗余的注意头
    蒸馏:比如使用LoRA 算法进行降秩处理

  3. 语义理解
    大模型实现语义理解的关键目前是使用transform机制,transform机制是多个并行执行的

  4. 装包问题
    pyenv install 3.12.0 遇到 ModuleNotFoundError: No module named ‘_lzma’
    执行 下面命令后再次安装

    1
    brew install xz

pip install open-webui 安装过程始终联网,这个耗时长,如果中断了,再执行一次就可以

执行open-webui serve 报错 ModuleNotFoundError: No module named ‘itsdangerous’
先装包再次执行

1
pip install itsdangerous