前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain

教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain

作者头像
技术人生黄勇
发布2024-07-19 18:28:24
1590
发布2024-07-19 18:28:24
举报
文章被收录于专栏:技术人生黄勇

搭建私人定制化AI知识库!详解如何使用云计算资源,部署ChatGLM和LangChain模型,打造专属智能问答工具。

01

申请免费试用

阿里云的免费产品申请地址:‍‍‍‍‍‍

https://free.aliyun.com/

因为免费产品太多太多!在“搜索试用产品”输入框内,输入“PAI”,快速找到我们要申请的机器学习平台API。

跟着操作提示步骤一步一步申请即可,中间可能有一些阿里云必要的角色创建,权限的赋予等等,都按照提示操作即可。

领取完成后,打开机器学习平台控制台‍‍

https://pai.console.aliyun.com/

点击左边的“交互式建模(DSW)”,然后点击右边的按钮:“创建实例”,按提示操作步骤创建好实力,最后点击“操作”下面的“启动”,等待启动完成后,点击“打开”。

点击“terminal”,打开一个终端,后续主要操作都在这个终端界面进行。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

机器学习需要的一些基础框架和组建,这个环境的 Docker 镜像已经给我们准备好了,省去了我之前从云服务器开始部署吃的苦头。见:终于部署成功!GPU 云环境搭建 ChatGLM2-6B 坎坷路

02

部署 ChatGLM2-6B

上面部分已经把环境准备好了,开始项目部署。‍‍‍

‍‍‍

大模型项目因为是预训练模型,数据权重文件比较大,ChatGLM 就是代码和模型分开存放的。

下载源码

代码语言:javascript
复制
git clone https://github.com/THUDM/ChatGLM2-6B

安装项目所需依赖

代码语言:javascript
复制
cd ChatGLM2-6B
# 官方推荐 transformers 库版本推荐为 4.30.2,torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能
pip install -r requirements.txt

下载模型

代码语言:javascript
复制
git clone https://huggingface.co/THUDM/chatglm2-6b 

这个下载命令会报错连不上 huggingface。这篇文章:工程落地实践|国产大模型 ChatGLM2-6B 阿里云上部署成功实现了解决方案,把文件传到 OSS 上(Object Storage Service,对象存储服务)。

模型下载问题解决后,我把模型文件放在了 ChatGLM2-6B/model 目录下,完整目录地址:/mnt/workspace/ChatGLM2-6B/model。‍‍‍‍‍‍‍‍‍‍‍

修改模型地址

打开 web_demo.py 文件,找到下面这两行,把引号里面模型地址改为下面这样刚刚放模型的目录名。不改的话,模型启动会去联网下载7个1G多的模型文件。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

代码语言:javascript
复制

tokenizer = AutoTokenizer.from_pretrained("model", trust_remote_code=True)
model = AutoModel.from_pretrained("model", trust_remote_code=True).cuda()

启用Web访问

还是 web_demo.py,找到这样,加上后面 server 部分。‍‍‍‍‍‍

代码语言:javascript
复制
demo.queue().launch(share=True, inbrowser=True, server_name='0.0.0.0', server_port=7860)

启动Web UI‍‍‍

代码语言:javascript
复制
python web_demo.py

出现下面界面表明模型部署成功

03

部署LangChain

模型部署安装完成后,可以将刚才启动的程序停止,开始部署 LangChain。

LangChain:是现在最流行围绕大语言模型构建的框架,可用于聊天机器人、生成式问答 (GQA)、摘要等。

如果要完成知识库的技术方案,需要一个文本向量化的模型,用户上传的知识和提问的问题,都会向量化,放在向量数据库中。搜索知识库时,大模型(这个项目采用就是ChatGLM)就会用它的推理能力将问题和知识进行向量计算匹配,最后会输出向量接近——也就是符合问题的结果。‍‍‍‍‍‍

‍‍‍‍‍‍

下载源码

代码语言:javascript
复制
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

安装依赖

代码语言:javascript
复制
cd langchain-ChatGLM
pip install -r requirements.txt

下载模型

Embedding 模型

代码语言:javascript
复制
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese $PWD/text2vec

照例按照上面的步骤,下载好模型,传到机器学习平台的服务器上,我放在了这个目录下:/mnt/workspace/text2vec。

修改模型地址

打开 configs/model_config.py 文件,找到参数 embedding_model_dict 修改 "text2vec" 的值为:/mnt/workspace/text2vec

找到参数 llm_model_dict 修改 "pretrained_model_name"值为: "/mnt/workspace/chatglm2-6b"。

代码语言:javascript
复制
embedding_model_dict = {
   ...
    "text2vec-base": "shibing624/text2vec-base-chinese",
    "text2vec": "/mnt/workspace/text2vec",
    ...
}

llm_model_dict = {
    ...
    "chatglm2-6b": {
        "name": "chatglm2-6b",
        "pretrained_model_name": "/mnt/workspace/chatglm2-6b",
        "local_model_path": None,
        "provides": "ChatGLM"
    },
    ...
}

再确认一下模型名称‍‍‍‍‍‍

代码语言:javascript
复制
LLM_MODEL = "chatglm2-6b"

确认 WebUI 界面可访问‍‍‍‍‍‍‍‍‍‍‍‍‍‍

代码语言:javascript
复制
(demo
 .queue(concurrency_count=3)
 .launch(server_name='0.0.0.0',
         server_port=7860,
         show_api=False,
         share=True,
         inbrowser=False))

启动 WebUI‍‍‍‍

代码语言:javascript
复制
python webui.py

出现这个界面就大功告成!

往期热门文章推荐:

工程落地实践|基于 ChatGLM2-6B + LangChain 搭建专属知识库初步完成

又一家顶级的大模型开源商用了!Meta(Facebook)的 Llama 2 搅动大模型混战的格局

Claude 2 解读 ChatGPT 4 的技术秘密:细节:参数数量、架构、基础设施、训练数据集、成本

AI人工智能大模型失守!ChatGPT、BARD、BING、Claude 相继被"提示攻击"攻陷!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术人生黄勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 TI 平台
腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档