前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LangChain + ChatGLM2-6B 搭建个人专属知识库

LangChain + ChatGLM2-6B 搭建个人专属知识库

原创
作者头像
程序员树先生
发布于 2023-07-14 04:12:42
发布于 2023-07-14 04:12:42
6.1K00
代码可运行
举报
文章被收录于专栏:程序员树先生程序员树先生
运行总次数:0
代码可运行

之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。

树先生之所以现在才更新 ChatGLM2-6B 知识库教程,是想等模型本身再多迭代几个版本,不至于刚出的教程很快不适配,或者项目本身一堆 bug,那样大家使用体验也不好。

ChatGLM2-6B 介绍

ChatGLM2-6B 在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,引入了如下新特性:

  • 更强大的性能:基于 ChatGLM 初代模型的开发经验,全面升级了基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
  • 更长的上下文:基于 FlashAttention 技术,将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。
  • 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
  • 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用

相比于初代模型,ChatGLM2-6B 多个维度的能力都取得了提升,以下是一些官方对比示例。

总的来说,看起来效果还不错,下面跟着树先生一起来试试水~

本文我将分 3 步带着大家一起实操一遍,并与之前 ChatGLM-6B 进行对比。

  • ChatGLM2-6B 部署
  • ChatGLM2-6B 微调
  • LangChain + ChatGLM2-6B 构建个人专属知识库

ChatGLM2-6B 部署

这里我们还是白嫖阿里云的机器学习 PAI 平台,使用 A10 显卡,这部分内容之前文章中有介绍。

免费部署一个开源大模型 MOSS

环境准备好了以后,就可以开始准备部署工作了。

下载源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/THUDM/ChatGLM2-6B

安装依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ChatGLM2-6B
# 其中 transformers 库版本推荐为 4.30.2,torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能
pip install -r requirements.txt

下载模型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 这里我将下载的模型文件放到了本地的 chatglm-6b 目录下
git clone https://huggingface.co/THUDM/chatglm2-6b $PWD/chatglm2-6b

参数调整

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 因为前面改了模型默认下载地址,所以这里需要改下路径参数
# 修改 web_demo.py 文件
tokenizer = AutoTokenizer.from_pretrained("/mnt/workspace/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/mnt/workspace/chatglm2-6b", trust_remote_code=True).cuda()

# 如果想要本地访问,需要修改此处
demo.queue().launch(share=True, inbrowser=True, server_name='0.0.0.0', server_port=7860)

Web 模式启动

官方推荐用 Streamlit 启动会更流程一些,但受限于 PAI 平台没有分配弹性公网,所以还是用老的 gradio 启动吧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python web_demo.py

ChatGLM2-6B 对比 ChatGLM-6B

先让 ChatGPT 作为考官,出几道题。

ChatGLM-6B 回答:

ChatGLM2-6B 回答:

明显可以看出,ChatGLM2-6B 相比于上一代模型响应速度更快,问题回答精确度更高,且拥有更长的(32K)上下文!

基于 P-Tuning 微调 ChatGLM2-6B

ChatGLM2-6B 环境已经有了,接下来开始模型微调,这里我们使用官方的 P-Tuning v2 对 ChatGLM2-6B 模型进行参数微调,P-Tuning v2 将需要微调的参数量减少到原来的 0.1%,再通过模型量化、Gradient Checkpoint 等方法,最低只需要 7GB 显存即可运行。

安装依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 运行微调需要 4.27.1 版本的 transformers
pip install transformers==4.27.1
pip install rouge_chinese nltk jieba datasets

禁用 W&B

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 禁用 W&B,如果不禁用可能会中断微调训练,以防万一,还是禁了吧
export WANDB_DISABLED=true

准备数据集

这里为了简化,我只准备了5条测试数据,分别保存为 train.json 和 dev.json,放到 ptuning 目录下,实际使用的时候肯定需要大量的训练数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"content": "你好,你是谁", "summary": "你好,我是树先生的助手小6。"}
{"content": "你是谁", "summary": "你好,我是树先生的助手小6。"}
{"content": "树先生是谁", "summary": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}
{"content": "介绍下树先生", "summary": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}
{"content": "树先生", "summary": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}

参数调整

修改 train.shevaluate.sh 中的 train_filevalidation_filetest_file为你自己的 JSON 格式数据集路径,并将 prompt_columnresponse_column 改为 JSON 文件中输入文本和输出文本对应的 KEY。可能还需要增大 max_source_lengthmax_target_length 来匹配你自己的数据集中的最大输入输出长度。并将模型路径 THUDM/chatglm2-6b 改为你本地的模型路径。

1、train.sh 文件修改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PRE_SEQ_LEN=32
LR=2e-2
NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
    --do_train \
    --train_file train.json \
    --validation_file dev.json \
    --preprocessing_num_workers 10 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /mnt/workspace/chatglm2-6b \
    --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 128 \
    --max_target_length 128 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 3000 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN

train.sh 中的 PRE_SEQ_LENLR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit 来改变原始模型的量化等级,不加此选项则为 FP16 精度加载。

2、evaluate.sh 文件修改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PRE_SEQ_LEN=32
CHECKPOINT=adgen-chatglm2-6b-pt-32-2e-2
STEP=3000
NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
    --do_predict \
    --validation_file dev.json \
    --test_file dev.json \
    --overwrite_cache \
    --prompt_column content \
    --response_column summary \
    --model_name_or_path /mnt/workspace/chatglm2-6b \
    --ptuning_checkpoint ./output/$CHECKPOINT/checkpoint-$STEP \
    --output_dir ./output/$CHECKPOINT \
    --overwrite_output_dir \
    --max_source_length 128 \
    --max_target_length 128 \
    --per_device_eval_batch_size 1 \
    --predict_with_generate \
    --pre_seq_len $PRE_SEQ_LEN

CHECKPOINT 实际就是 train.sh 中的 output_dir

训练

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash train.sh

5 条数据大概训练了 50 分钟左右。

推理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash evaluate.sh

执行完成后,会生成评测文件,评测指标为中文 Rouge score 和 BLEU-4。生成的结果保存在 ./output/adgen-chatglm2-6b-pt-32-2e-2/generated_predictions.txt。我们准备了 5 条推理数据,所以相应的在文件中会有 5 条评测数据,labels 是 dev.json 中的预测输出,predict 是 ChatGLM2-6B 生成的结果,对比预测输出和生成结果,评测模型训练的好坏。如果不满意调整训练的参数再次进行训练。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"labels": "你好,我是树先生的助手小6。", "predict": "你好,我是树先生的助手小6。"}
{"labels": "你好,我是树先生的助手小6。", "predict": "你好,我是树先生的助手小6。"}
{"labels": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。", "predict": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}
{"labels": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。", "predict": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}
{"labels": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。", "predict": "树先生是一个程序员,热衷于用技术探索商业价值,持续努力为粉丝带来价值输出,运营公众号《程序员树先生》。"}

部署微调后的模型

这里我们先修改 web_demo.sh 的内容以符合实际情况,将 pre_seq_len 改成你训练时的实际值,将 THUDM/chatglm2-6b 改成本地的模型路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PRE_SEQ_LEN=32

CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \
    --model_name_or_path /mnt/workspace/chatglm2-6b \
    --ptuning_checkpoint output/adgen-chatglm2-6b-pt-32-2e-2/checkpoint-3000 \
    --pre_seq_len $PRE_SEQ_LEN

然后再执行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash web_demo.sh

结果对比

原始模型
微调后模型

LangChain + ChatGLM2-6B 构建知识库

LangChain 知识库技术原理

目前市面上绝大部分知识库都是 LangChain + LLM + embedding 这一套,实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt 中 -> 提交给 LLM 生成回答。

从上面就能看出,其核心技术就是向量 embedding,将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 promt 提交给 LLM 回答,很好理解吧。一个典型的 prompt 模板如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
已知信息:
{context} 

根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 
问题是:{question}
"""

更多关于向量 embedding 的内容可以参考我之前写的一篇文章。

ChatGPT 引爆向量数据库赛道

项目部署

下载源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

安装依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd langchain-ChatGLM
pip install -r requirements.txt

下载模型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装 git lfs
git lfs install

# 下载 LLM 模型
git clone https://huggingface.co/THUDM/chatglm2-6b $PWD/chatglm2-6b

# 下载 Embedding 模型
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese $PWD/text2vec

# 模型需要更新时,可打开模型所在文件夹后拉取最新模型文件/代码
git pull

参数调整

模型下载完成后,请在 configs/model_config.py 文件中,对embedding_model_dictllm_model_dict参数进行修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
embedding_model_dict = {
    "ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
    "ernie-base": "nghuyong/ernie-3.0-base-zh",
    "text2vec-base": "shibing624/text2vec-base-chinese",
    "text2vec": "/mnt/workspace/text2vec",
    "m3e-small": "moka-ai/m3e-small",
    "m3e-base": "moka-ai/m3e-base",
}

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

# LLM 名称改成 chatglm2-6b
LLM_MODEL = "chatglm2-6b"

项目启动

Web 模式启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python webui.py

如果报了这个错:

升级下 protobuf 即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install --upgrade protobuf==3.19.6

启动成功!

模型配置

上传知识库

基于 ChatGLM2-6B 的知识库问答

定制 UI

由于 LangChain 项目更新了接口,树先生之前开发的定制 UI 也同步更新进行了适配。

选择知识库

基于知识库问答

显示答案来源

好了,这一篇还挺长的,不过很多内容之前文章中都有提到,相当于是一篇 LangChain + LLM + embedding 构建知识库的总结篇了,大家收藏好这一篇就行了~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
用深度神经网络搭建马赛克神器,高清无码效果感人
相信一提起马赛克这个东西,不少小伙伴都痛心疾首,虽然最近几年也频繁传出有在研发去除马赛克的软件,一直没有成品问世。不过最近一位程序员及经过不断努力终于完成了这款软件。
不脱发的程序猿
2021/01/20
9890
python+OpenCV 特征点检测
Harris角点检测算法是一个极为简单的角点检测算法,该算法在1988年就被发明了,算法的主要思想是如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点。基本原理是根据公式:
流川疯
2019/01/18
1.4K0
美翻你的朋友圈,Python生成蒙太奇马赛克图片
我们有时候会听到这么一个词--“蒙太奇”,但却不知道这个词是什么意思。蒙太奇原为建筑学术语,意为构成、装配。而后又延伸为一种剪辑理论:当不同镜头拼接在一起时,往往又会产生各个镜头单独存在时所不具有的特定含义。这就是我们经常听到了蒙太奇手法,在电影《飞屋环游记》中皮克斯运用蒙太奇手法,用一个不到5分钟的短片展现了主角的大半人生,感动无数观众。下面我们就看看今天的内容同蒙太奇有何关系。
ZackSock
2020/05/18
9940
美翻你的朋友圈,Python生成蒙太奇马赛克图片
基于 Go 协程实现图片马赛克应用(上):同步版本
介绍完 Go 并发编程基础和常见并发模式的实现后,我们来看一个完整的项目 —— 基于 Go 语言实现照片马赛克功能,为了对比并发与非并发的性能差异,我们先通过同步代码实现这个功能。
学院君
2020/10/19
1K0
基于 Go 协程实现图片马赛克应用(上):同步版本
什么是马赛克图片?如果用Python把21057张图片合成一张,会是什么样的
说是女儿从出生到现在,所有的照片,大概有上百张,所以想使用这些照片合成一张,当做生日礼物
松鼠爱吃饼干
2022/01/04
7910
什么是马赛克图片?如果用Python把21057张图片合成一张,会是什么样的
python 马赛克-像素图
刚好最近搞numpy的数据处理,还有各种格式的数据转换,发现使用各种库,其实都是在做各种数据的转换,挺有意思的。
叶子陪你玩
2021/12/21
1K0
python 马赛克-像素图
[Python图像处理] 二十.图像量化处理和采样处理及局部马赛克特效
前面一篇文章我讲解了基于K-Means聚类的图像分割或量化处理,但突然发现市场上讲解图像量化和采样代码的文章很缺乏,因此结合2015年自己的一篇 文章 及相关知识,分享一篇Python图像量化及处理的博文供同学们学习。基础性文章,希望对你有所帮助。
Eastmount
2023/09/01
1.1K0
[Python图像处理] 二十.图像量化处理和采样处理及局部马赛克特效
使用Depix进行马赛克的消除测试
最近看到各种公众号都在推一个叫Depix的Github项目,用途是能够消除文字马赛克,抱着试试看的态度测试了一下这个项目。
全栈程序员站长
2022/09/12
6.6K0
使用Depix进行马赛克的消除测试
Depix马赛克_马赛克是什么意思啊
笔者本来只是翻了翻微信的公众号,突然发现很多公众号都提高了一个叫做Depix的项目,据说是马赛克的克星,于是好奇的到Github上下载了试试效果,公众号推送相关消息如下: 最近,一个名为 Depix 的 GitHub 项目爆火,上线三天 star 量已经高达 6.9k。项目作者 Sipke Mellema 是一名信息安全顾问。
全栈程序员站长
2022/08/03
7850
Depix马赛克_马赛克是什么意思啊
基于 Go 协程实现图片马赛克应用(下):并发重构
在之前同步版本的应用中,对于示例图片的马赛克处理,需要几秒时间才能完成,我们可以通过并发编程来提升这个性能。
学院君
2020/10/19
7670
基于 Go 协程实现图片马赛克应用(下):并发重构
[Python还能干嘛]微信好友头像完成马赛克拼图~
何谓马赛克拼图,简单来说就是将若干小图片平凑成为一张大图,如下图路飞一样,如果放大看你会发现里面都是一些海贼王里面的图片。
Awesome_Tang
2019/07/01
1.5K0
[Python还能干嘛]微信好友头像完成马赛克拼图~
鸿蒙开发实战案例:图片编辑实现马赛克效果
本示例将原图手指划过的区域分割成若干个大小一致的小方格,然后获取每个小方格中的像素点的平均色彩数值,使用获取到的平均色彩数值替换该方格中所有的像素点。最后使用createPixelMapSync接口将新的像素点数据写入图片,即可实现原始图片的局部马赛克处理。
小帅聊鸿蒙
2025/02/22
720
鸿蒙开发实战案例:图片编辑实现马赛克效果
iOS多边形马赛克的实现(上)
马赛克(英语:Mosaic)是镶嵌艺术的音译,原本是指一种装饰艺术,通常使用许多小石块或有色玻璃碎片拼成图案,在教堂中的玻璃艺品,又称为花窗玻璃(stained glass)。后来该词(马赛克)泛指这种类型五彩斑斓的视觉效果。 在计算机图形学里,马赛克技术(日语:モザイク処理,英语:Pixelization)是一种利用与镶嵌画装饰艺术类似原理的影像处理方法,在香港又称打格仔。此方法将影像特定区域的色阶细节劣化并造成色块打乱的效果,其目的是为了使另一个人无法辨认,同时用在影像处理时有时也称为码赛克、打码(由单
天天P图攻城狮
2018/02/02
4.1K3
iOS多边形马赛克的实现(上)
python中imread什么意思_imwrite函数
最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误。如果你正好也对此感到困惑可以看下这篇总结。当然,要了解具体的细节,还是应该 read the fuck code和API document,但貌似python的很多模块文档都不是很全,所以只能多看代码和注释了。
全栈程序员站长
2022/11/04
1.1K0
R可视乎|创建乐高版马赛克图
今日内容比较“无用”,觉得比较好玩,所以就做一期“异类”可视化啦!主要介绍下 brickr[1] 包,它将乐高(LEGO) 带入 R 和 tidyverse 生态系统中,该包分为2个部分:
庄闪闪
2021/09/14
7090
PHP实现图片马赛克效果
对图片中选定区域的每一像素,增加若干宽度及高度,来生成矩型。而每一像素的矩型重叠在一起,就形成了马赛克效果。本例使用GD库的imagecolorat获取像素颜色,使用imagefilledrectangle画矩型。
用户7657330
2020/08/14
6050
three.js 将图片马赛克化
这篇郭先生来说说BufferGeometry,类型化数组和粒子系统的使用,并且让图片有马赛克效果(同理可以让不清晰的图片清晰化),如图所示。在线案例点击图片马赛克。
郭先生的博客
2020/08/31
2.7K0
three.js 将图片马赛克化
谁能驾驭马赛克?微软AI打码手艺 VS 谷歌AI解码绝活儿
上个月底,微软研究院推出一套基于AI 技术的视频人脸模糊解决方案,通俗讲就是为人脸自动打码。而在今日,谷歌发布了模糊图片转高清图片的解决方案,说白了就是去除马赛克的技术。 你说谷歌,人家微软刚整出一套自动打码手艺,你就来个自动解码绝活。不少人有个疑问,那么谷歌是否能解除微软打的马赛克,上演一番科技版“用我的矛戳你的洞”?我们先来看下双方的技术原理是怎么样。 一、微软自动打码手艺 根据微软亚洲研究院副研究员谢文轩介绍,操作这套解决方案,用户只需在后台用鼠标选择想要打码的人物,相应人物在视频中的所有露脸区域
AI科技评论
2018/03/09
2.4K0
谁能驾驭马赛克?微软AI打码手艺 VS 谷歌AI解码绝活儿
Python 图像处理实用指南:1~5
顾名思义,图像处理可以简单地定义为在计算机中(通过代码)使用算法对图像进行处理(分析和操作)。它有几个不同的方面,如图像的存储、表示、信息提取、操作、增强、恢复和解释。在本章中,我们将对图像处理的所有这些不同方面进行基本介绍,并介绍使用 Python 库进行的实际图像处理。本书中的所有代码示例都将使用 Python 3。
ApacheCN_飞龙
2023/04/27
5.6K0
Python 图像处理实用指南:1~5
jquery酷炫的马赛克图片还原动画代码
jquery酷炫的马赛克图片还原动画代码,jquery马赛克图片动画,js酷炫图片代码,马赛克图片js还原效果,js图片分散汇聚效果素材
博客趣
2024/01/08
2670
jquery酷炫的马赛克图片还原动画代码
推荐阅读
相关推荐
用深度神经网络搭建马赛克神器,高清无码效果感人
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • ChatGLM2-6B 介绍
  • ChatGLM2-6B 部署
    • 下载源码
    • 安装依赖
    • 下载模型
    • 参数调整
    • Web 模式启动
    • ChatGLM2-6B 对比 ChatGLM-6B
  • 基于 P-Tuning 微调 ChatGLM2-6B
    • 安装依赖
    • 禁用 W&B
    • 准备数据集
    • 参数调整
      • 1、train.sh 文件修改
      • 2、evaluate.sh 文件修改
    • 训练
    • 推理
    • 部署微调后的模型
    • 结果对比
      • 原始模型
      • 微调后模型
  • LangChain + ChatGLM2-6B 构建知识库
    • LangChain 知识库技术原理
    • 项目部署
    • 项目启动
    • 定制 UI
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档