当前位置: 首页 > news >正文

开源多模态新标杆——BAGEL本地部署教程:7B参数撬动万亿数据

一、简介

BAGEL ,这是一个开源的多模态基础模型,具有 70 亿个激活参数(总共 140 亿个),并在大规模交错多模态数据上进行训练。

BAGEL 在标准多模态理解排行榜上超越了当前顶级的开源 VLMs 如 Qwen2.5-VL 和 InternVL-2.5,并且提供了与强大的专业生成器如 SD3 竞争的文本到图像质量。 此外,BAGEL 在经典的图像编辑场景中展示了比领先的开源模型更好的定性结果。

更重要的是,它扩展到了自由形式的视觉操作、多视图合成和世界导航,这些能力构成了超出以往图像编辑模型范围的“世界建模”任务。

teaser.jpg

1.方法

BAGEL 采用了一种混合变压器专家(MoT)架构,以最大化模型从丰富多样的多模态信息中学习的能力。遵循同样的容量最大化原则,它利用两个独立的编码器来捕捉图像的像素级和语义级特征。整个框架遵循下一个令牌组预测范式,其中模型被训练为将下一组语言或视觉令牌作为压缩目标进行预测。

BAGEL 通过在数万亿交织的多模态令牌上进行预训练、继续训练和监督微调,扩展了 MoT 的能力,这些令牌涵盖了语言、图像、视频和网络数据。它在标准的理解和生成基准测试中超越了开放模型,并展示了先进的上下文多模态能力,如自由形式的图像编辑、未来帧预测、3D 操作、世界导航和序列推理。

2.新兴特性

随着我们使用更多的多模态令牌扩大 BAGEL 的预训练规模,我们在理解、生成和编辑任务中观察到一致的性能提升。不同的能力在不同的训练阶段出现——多模态理解和生成较早出现,随后是基本编辑,而复杂的智能编辑则在后期出现。这种分阶段的进步表明了一种新兴模式,即高级多模态推理建立在良好的基础技能之上。消融研究表明,结合 VAE 和 ViT 特征显著提高了智能编辑,强调了视觉-语义上下文在实现复杂多模态推理中的重要性,并进一步支持其在高级能力出现中的作用。

3.关于推理超参数:

  • cfg_text_scale:控制模型遵循文本提示的强度。 禁用文本引导。典型范围: 。1.0``4.0–8.0
  • cfg_image_scale:控制模型保留输入图像细节的程度。 禁用图像引导。典型范围: 。1.0``1.0–2.0
  • cfg_interval:应用 CFG 的降噪步骤的分数。后续步骤可以跳过 CFG 以减少计算。典型:。[0.4, 1.0]
  • timestep_shift 改变降噪步骤的分布。值越高,开始时分配的步长越多(影响布局);值越低,最后分配的越多(改善细节)。
  • num_timesteps:总降噪步骤。典型:。50
  • cfg_renorm_min:CFG-Renorm 的最小值。 禁用 renorm。典型:。1.0``0
  • cfg_renorm_type:CFG-Renorm 方法:
    • global:对所有令牌和通道进行标准化(T2I 的默认值)。
    • channel:每个 Token 的跨通道标准化。
    • text_channel:与 ,但仅适用于文本条件(适合编辑,可能会导致模糊)。channel
  • 如果编辑后的图像显示模糊,请尝试 全局 CFG-Renorm、降低 cfg_renorm_min 或降低 cfg_scale

二、本地部署

环境版本
Python>=3.10
PyTorch=2.5.1
Ubtuntu=22.4.0

1.创建虚拟环境

1.1 安装 Miniconda

步骤 1:更新系统
首先,更新您的系统软件包:

sudo apt update
sudo apt upgrade -y

步骤 2:下载 Miniconda 安装脚本
访问 Miniconda 的官方网站或使用以下命令直接下载最新版本的安装脚本(以 Python 3 为例):

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

步骤 3:验证安装脚本的完整性(可选)
下载 SHA256 校验和文件并验证安装包的完整性:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh.sha256
sha256sum Miniconda3-latest-Linux-x86_64.sh

比较输出的校验和与.sha256 文件中的值是否一致,确保文件未被篡改。

步骤 4:运行安装脚本
为安装脚本添加执行权限:

chmod +x Miniconda3-latest-Linux-x86_64.sh

运行安装脚本:

./Miniconda3-latest-Linux-x86_64.sh

步骤 5:按照提示完成安装
安装过程中,您需要:

阅读许可协议 :按 Enter 键逐页阅读,或者按 Q 退出阅读。
接受许可协议 :输入 yes 并按 Enter。
选择安装路径 :默认路径为/home/您的用户名/miniconda3,直接按 Enter 即可,或输入自定义路径。
是否初始化 Miniconda :输入 yes 将 Miniconda 添加到您的 PATH 环境变量中。
步骤 6:激活 Miniconda 环境
安装完成后,使环境变量生效:

source ~/.bashrc

步骤 7:验证安装是否成功
检查 conda 版本:

conda --version

步骤 8:更新 conda(推荐)
为了获得最新功能和修复,更新 conda:

conda update conda

1.2.创建虚拟环境

conda create -n bagel python==3.10.12

2.克隆仓库

项目地址:字节跳动-种子/百吉饼

git clone https://github.com/bytedance-seed/BAGEL.git

3.安装依赖

在安装依赖前需要删掉requirements.txt中的flash_attn==2.5.8,因为它会与pytorch冲突,因此后面单独安装

requirements.txt路径:/BAGEL/requirements.txt

#进入项目文件
cd BAGEL
#激活虚拟环境
conda activate bagel
#安装依赖
pip install -r requirements.txt

4.安装flash-ann

Flash Attention是一种注意力算法,更有效地缩放基于transformer的模型,从而实现更快的训练和推理。由于很多llm模型运行的时候都需要安装flash_attn,比如Llama3,趟了不少坑,最后建议按照已有环境中Python、PyTorch和CUDA的版本精确下载特定的whl文件安装是最佳方式。

#查看cuda版本
nvidia-smi
nvcc -V
#查看torch版本
pip show torch

选择对应的版本下载到本地

flash-ann下载地址: Releases · Dao-AILab/flash-attention

下面是本人安装的对应版本

#安装flash-ann
pip install flash_attn-2.7.0.post2+cu12torch2.5cxx11abiTRUE-cp310-cp310-linux_x86_64.whl

5.下载模型

模型下载路径:BAGEL-7B-MoT · 模型库

下载命令:

可以根据自己的磁盘大小更改--local_dir后面的模型储存路径

#新建文件夹
mkdir models
#安装魔搭下载工具
pip install modelscope
#下载模型
modelscope download --model ByteDance-Seed/BAGEL-7B-MoT --local_dir /BAGEL/models

更改启动文件中的模型路径

路径:/BAGEL/app.py

如图所示:

image.png

将红框中的路径改为你实际的模型路径,推荐使用绝对路径

6.启动

BAGEL可使用1张4090及以上的GPU也可以使用多张显卡,但是使用1张或2张4090的生成速度是非常慢的,因此推荐使用3张4090并行运算,生成的时间较快,费用较低

使用gradio页面

#安装gradio
pip install gradio
#运行app.py
python app.py

在启动app.py后会出现下面的网址,在浏览器中输入网址进入BAGEL的gradio页面

http://127.0.0.1:7860

image.png

http://www.xdnf.cn/news/674893.html

相关文章:

  • 《算法和数据结构》算法篇
  • 车载通信网络 --- OSI模型:网络层
  • SQL 查询慢的常见原因分析
  • 【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布
  • 机器学习-决策树
  • 洛谷 P5091:【模板】扩展欧拉定理
  • MacOS内存管理-删除冗余系统数据System Data
  • 第六章 文件的其他操作命令
  • 计算机组成原理——CISC与RISC
  • 【基于STM32的新能源汽车智能循迹系统开发全解析】
  • 什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?​
  • 使用java8开发mcp server
  • 让学习回归到技术上来(技术 !=== 死记硬背)
  • name ‘selective_scan_fn‘ is not defined运行出现这个错误
  • 修改 Ubuntu Installer 从串口输出的方法
  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • Qwen2.5-VL视觉-语言模型做图片理解调研
  • 深入解析Spring Boot与Redis的集成实践
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 自动化Web页面性能测试介绍
  • [Java实战]Spring Boot切面编程实现日志记录(三十六)
  • ojs导入显示空白页错误信息
  • C-自定义类型
  • go中的channel
  • 蓝桥杯b组c++赛道---字典树
  • WPF【10_2】数据库与WPF实战-示例
  • 中级统计师-统计学基础知识-第七章 回归分析
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 简单网络交换、路由-华三单区域OSPF