书生系列
书生系列
Heading 2
Here is the content.
1. Agent基础介绍
1.1 Agent是什么
是一种能够 【自主感知环境并根据感知结果采取行动】的实体,以感知序列为输入,以动作作为输出的函数。
它可以以软件形式(如聊天机器人 推荐系统)存在,也可以是物理形态的机器(如自动驾驶汽车 机器人)。
自主性:能够在没有外部干预的情况下做出决定
交互性:能够在环境交换信息。
适应性:根据环境变化调整自身行为
目的性:所有行为都以实现特定目标为导向。
2 Lagent框架介绍
2.1 是什么
是一个轻量级的开源框架,旨在帮助用户高效地构建基于大语言模型(LLM)的智能体。该框架支持多种智能体范式,如ReAct,AutoGPT和ReWOO,能够驱动LLM进行多轮推理和功能调用。
7B模型 16位浮点(2Byte)模型的权重大小计算:
7*10**9 * 2 = 140亿字节 = 14GB
3 InternVL 部署微调实践闯关任务
3.1 理解多模态大模型的常见设计模式,可以大概讲出多模态大模型的工作原理。
多模态大模型是能够处理和融合不同模态的信息,以实现多种任务的深度学习模型。这类模型的设计通常涉及多个模态的融合策略,以便在多种不同输入间有效的共享知识。
以下列举了常见的设计模式和工作原理:
1. 独立模态处理(Independent Modalities)
每个模态独立处理,分别通过各自的神经网络模块进行特征提取。最终,所有模态的特征在某一层进行融合。
- 工作原理:不同模态(例如文本和图像)通过不同的神经网络(如BERT处理文本,CNN处理图像)进行独立学习和表示。在最后,所有模态的特征进行拼接、加权平均或其他融合方法,生成一个统一的表示来执行任务。
- 优点:模块化,便于调试和优化不同模态的处理。
- 缺点:可能无法充分利用模态间的关系,融合时可能失去信息。
2. 早期融合(Early Fusion)
在多模态模型的输入阶段就进行融合,将所有模态的数据合并成一个统一的输入。例如,将文本信息和图像信息在特征层面结合后一起输入到模型中。
- 工作原理:多模态信息在输入阶段(如拼接)合并,形成一个统一的表示。然后这个融合的表示直接通过神经网络进行处理,执行目标任务。
- 优点:模态间信息能够在早期阶段就被充分融合,可能提高任务的表现。
- 缺点:早期融合可能导致不同模态的信息相互干扰,特别是当模态差异较大时。
3. 晚期融合(Late Fusion)
每个模态的网络单独处理后,在最后的决策层进行融合。这种方法常用于分类或回归任务。
- 工作原理:每个模态先经过独立的处理网络,最后各个模态的输出进行拼接或加权平均,再由一个最终的决策层进行融合,输出最终结果。
- 优点:模型结构简单,易于理解和实现,适合在每个模态都能单独完成初步分析的场景。
- 缺点:可能无法充分利用不同模态间的内在联系,导致性能不如早期融合。
4. 跨模态学习(Cross-modal Learning)
跨模态学习使得模型能够学习不同模态之间的关系。常见的方法有对比学习、联合训练等。
- 工作原理:通过对比学习或映射学习,模型可以理解如何将一个模态的表示映射到另一个模态。例如,在图像和文本的对比学习中,模型学习到如何在图像和文本之间建立对应关系,从而提高多模态理解能力。
- 优点:能够学习模态之间的映射和关系,提高任务的通用性和精度。
- 缺点:训练过程复杂,需要大量的数据和计算资源。
5. Transformer架构
很多多模态大模型基于Transformer架构,尤其是“视觉-语言模型”(如CLIP、DALL·E、BLIP等),它们使用Transformer来处理文本和图像信息。
- 工作原理:多模态信息通过Transformer编码器和解码器进行交替处理。模型首先处理每个模态的输入,然后将各模态的表示通过自注意力机制融合在一起,形成跨模态的联合表示。通过共享的Transformer层,模型能够学习到跨模态的关联信息。
- 优点:Transformer能够有效处理长序列数据和多模态输入,且自注意力机制可以捕捉模态之间的复杂关系。
- 缺点:计算复杂度高,需要大量的训练数据和资源。
6. 多任务学习(Multi-task Learning)
多任务学习是一种训练多模态大模型的方法,旨在同时解决多个任务,例如文本生成、图像识别、情感分析等。
- 工作原理:通过共享底层的特征表示,不同任务通过同一个网络进行学习和优化。每个任务都有独立的损失函数,但共享特征表示可以帮助模型学习到跨任务的通用模式。
- 优点:能够提高模型的泛化能力,因为模型同时学习了多种任务。
- 缺点:任务之间的冲突可能影响模型的性能,需要精心设计任务间的平衡。
总结
多模态大模型通过融合来自不同模态的信息,以便更好地理解和执行复杂任务。每种设计模式都有其优缺点,选择合适的设计模式取决于任务需求、模态差异性和计算资源的限制。随着模型规模的扩大和训练技术的进步,多模态模型的融合方法正在不断改进,从而实现更强大的多任务、多模态理解能力。
3.2 了解InternVL2的设计模式,可以大概描述InternVL2的模型架构和训练流程。
InternVL2 是一个视觉-语言预训练模型,通常用于处理跨模态任务,如视觉问答、图像字幕生成等。它的设计模式是基于 Transformer 架构的多模态学习模型。下面是它的模型架构和训练流程的概述:
模型架构:
- 输入层:
- 视觉输入:使用卷积神经网络(CNN)或视觉 Transformer(如 ViT)提取图像特征。
- 语言输入:使用一个文本编码器(通常是基于 Transformer 的模型,如 BERT 或 GPT)将文本转换为向量表示。
- 融合层:
- 使用跨模态注意力机制(Cross-modal Attention)来融合图像和文本信息。图像和文本的特征表示会相互作用,使模型能够理解两者之间的关联。
- Transformer 编码器:
- 在多模态信息融合后,经过 Transformer 编码器进行处理,模型学习到图像和文本的联合表示。
- 输出层:
- 根据任务的不同,输出不同的形式:分类标签、生成的文本(如图像描述)或其他特定任务的输出。
训练流程:
- 数据预处理:
- 图像和文本配对数据集,如图像和对应的描述、问题及答案对等。
- 对图像进行预处理,如缩放、裁剪、归一化等。
- 对文本进行 Tokenization 和嵌入。
- 预训练:
- 通常采用自监督学习方法进行预训练,使用大量未标注的数据进行训练。
- 通过图像-文本对的匹配任务来学习视觉和语言之间的联系。例如,给定一个图像和一个文本描述,模型需要判断它们是否匹配。
- 微调(Fine-tuning):
- 在特定任务数据集上进行微调,例如图像描述生成、视觉问答等任务。通过监督学习,模型优化任务特定的目标。
- 评估:
- 使用任务特定的评估指标进行评估,如图像描述生成任务的 BLEU、METEOR 分数,或视觉问答任务的准确率等。
InternVL2 的设计强调跨模态信息的融合,利用强大的 Transformer 架构进行多模态表示学习,使得它在视觉和语言任务中表现出色。
了解LMDeploy部署多模态大模型的核心代码,并运行提供的gradio代码,在UI界面体验与InternVL2的对话。
了解XTuner,并利用给定数据集微调InternVL2-2B后,再次启动UI界面,体验模型美食鉴赏能力的变化。
将训练好的模型上传到 Hugging Face 或 ModelScope 上,模型名称包含 InternVL 关键词(优秀学员必做)
4 实战
Conda的基本命令
conda env list
conda activate streamer-sales
conda deactivate
conda env remove -n streamer-sales
4.1 Sale
xtuner list-cfg
rm -rf /root -v
2 微调
xtuner train ./config/internlm2_5_chat_7b_qlora_alpaca_e3_copy.py --deepspeed deepspeed_zero2 --work-dir ./work_dirs_2/assistTuner
3 合并模型
xtuner convert pth_to_hf /root/finetune/config/internlm2_5_chat_7b_qlora_alpaca_e3_copy.py \
/root/finetune/work_dirs/assistTuner/iter_267.pth \
/root/finetune/work_dirs/iter_267_hf
4 将微调后的模型和源模型 merge 生成新的模型
# 解决 Error: mkl-service + Intel(R) MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library.
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/finetune/models/internlm2_5-7b-chat \
/root/finetune/work_dirs/iter_267_hf \
/root/finetune/work_dirs/iter_267_merge
5 安装 lmdeploy
pip install lmdeploy[all]==0.4.0
6 对模型进行 4bit 量化(可选)
lmdeploy lite auto_awq /root/finetune/work_dirs/iter_267_merge --work-dir /root/finetune/work_dirs/iter_267_merge_4bit
lmdeploy lite auto_awq ./work_dirs/internlm2_chat_7b_qlora_custom_data/iter_340_merge \
--work-dir ./work_dirs/internlm2_chat_7b_qlora_custom_data/iter_340_merge_4bit
使用https://github.com/InternLM/Tutorial/blob/camp4/docs/L1/XTuner/README.md安装环境
from transformers.cache_utils import Cache, DynamicCache, StaticCache
ImportError: cannot import name 'StaticCache' from 'transformers.cache_utils' (/root/.conda/envs/streamer-sales/lib/python3.10/site-packages/transformers/cache_utils.py)
pip install transformers==4.39.3
pip show transformers
Name: transformers
Version: 4.36.2
pip install --upgrade transformers>=4.37.0
4.2 数字人
ComfyUI 环境搭建
git clone https://github.com/comfyanonymous/ComfyUI.git
studio-conda -t comfyui-streamer-sales -o pytorch-2.1.2
conda activate comfyui-streamer-sales
pip install -r requirements.txt
python main.py
python download_models.py
ssh -p 40018 root@ssh.intern-ai.org.cn -CNg -L 8188:127.0.0.1:8188 -o StrictHostKeyChecking=no
4.3 XTuner微调DeepSeek qwen1.5
你是否好奇如何让 DeepSeek相关模型焕发出更强大的潜力?比如手机销售员,超市导购,瑜伽教练等等,通过语模型对话能够回答专业的知识,通用模型不具备的知识是如何给通用模型的呢?本次实战将借助框架 XTuner 对蒸馏版本的 DeepSeek 1.5B 模型进行微调,带你一探究竟,验证这一创新操作的可行性!
本次实战的内容让模型可以按要求称自己为【小薇销售顾问】,可以作为手机销售人员,回答手机销售方面的问题。
一、训练用电脑配置
系统镜像:Cuda12.2-conda,镜像版本为 gpu-12.2
GPU:50% A100 ,显存 40960MiB
CPU:vCPU * 8000
内存:112GB
二、微调和未微调的效果
想象一下,你和朋友买了同样配置的电脑。你的朋友直接开箱使用,而你对电脑进行了一番精心微调。在运行大型游戏时,朋友的电脑可能出现偶尔卡顿,加载时间也较长;而你的电脑画面流畅,加载迅速,游戏体验极佳。在处理复杂的办公软件任务,如大型 Excel 表格运算、Photoshop 图片处理时,微调后的电脑响应更快,能帮你节省不少时间。这就是微调和未微调的直观差异,微调能让电脑硬件发挥出更强大的性能。
什么是微调:大语言模型的微调(Fine-tuning of Large Language Models)是指在预训练的大型语言模型基础上,使用特定任务的数据进一步训练模型,以使其更好地适应和执行特定任务的过程。
我们来问问没有微调前的模型你是谁,现在流行的手机是什么
什么是微调
电脑配置微调,简单来说,就是对电脑硬件的一些参数进行优化设置,以挖掘硬件的潜在性能。它并非是更换硬件,而是在现有硬件基础上,通过修改 BIOS 设置、调整操作系统参数、优化软件设置等方式,让硬件之间的协同工作更加高效。比如,调整 CPU 的倍频和外频,可以适当提升 CPU 的运行频率,从而提高运算速度;优化内存的时序,能让内存的数据读写更快。
XTuner 是什么
XTuner 是一款专门用于电脑配置微调的强大工具。它就像是一个电脑性能管家,能帮助用户轻松实现对电脑硬件的精细调整。通过 XTuner,用户无需深入了解复杂的硬件知识和专业的 BIOS 设置,就能对 CPU、GPU、内存等硬件进行优化。它拥有简洁直观的界面,各种调整选项一目了然。例如,在 XTuner 中,你可以一键式提升 CPU 的睿频加速能力,让 CPU 在处理复杂任务时能自动提高频率,增强性能。
XTuner 安装麻烦吗
很多人可能会担心 XTuner 的安装过程会不会很复杂。其实完全不用担心,XTuner 的安装非常简便。就像安装普通的软件一样,你只需从官方网站下载安装包,然后按照安装向导的提示,一步步点击 “下一步” 即可完成安装。整个过程通常只需要几分钟,即使是电脑小白也能轻松上手。安装完成后,打开 XTuner,就能立即开始对电脑进行微调操作。
微调很容易
使用 XTuner 进行电脑配置微调,真的是一件轻而易举的事情。打开 XTuner 后,你会看到清晰的硬件状态展示,每个硬件都有对应的优化选项。比如,对于 GPU,你可以通过简单的滑块操作,调整其核心频率和显存频率,从而提升图形处理能力。而且,XTuner 还提供了预设的优化方案,如果你不想自己逐个调整参数,只需选择适合自己使用场景的预设方案,点击应用,XTuner 就会自动帮你完成所有的微调设置。无论是游戏玩家追求极致的帧率,还是设计师需要更流畅的图形渲染,都能轻松实现。
总结和遐想
通过对电脑配置的微调,尤其是借助 XTuner 这样便捷的工具,我们能让电脑的性能得到显著提升,为我们的工作、娱乐和学习带来更好的体验。未来,随着技术的不断发展,我们可以期待类似 XTuner 这样的工具更加智能和强大。也许在不久的将来,电脑配置微调将变得更加自动化,甚至电脑能根据我们实时的使用场景,自动进行最优的配置调整,让每一台电脑都能时刻保持最佳性能状态。如果你还没有尝试过电脑配置微调,不妨现在就行动起来,用 XTuner 开启你的电脑性能提升之旅。