开源多模态新标杆——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.pswp.cn/web/81493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SD卡+FATFS+Tinyjpeg图片解码显示 (STM32F103VET6通过CubeMX快速建立工程)

先展示最终实现的功能效果如下: 1.目的与意义 为什么选用SD卡? 使用Nor-flash(W25Q系列)进行图片的存取,需要先把图片通过对应软件批量处理为二进制bin文件,再通过SPI等通讯方式将 bin文件烧写进Nor-flash才能进行使用,使用时还要记住每张图片的首地址和对应字节数,MC…

数据结构-散列表查找(哈希表)

一,散列表查找定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集中存在这个记录&#xff0…

Stable Diffusion 简单了解一下

1. 帮我简单介绍一下:StableDiffusion 🌈 Stable Diffusion 是什么? Stable Diffusion 是一个 文本生成图像(Text-to-Image) 的人工智能模型。你只需要输入一句话,它就能根据这句话生成一张高质量的图片。 比如: "一只穿着太空服的猫,在月球上弹吉他"St…

R语言科研编程-标准偏差柱状图

生成随机数据 在R中&#xff0c;可以使用rnorm()生成正态分布的随机数据&#xff0c;并模拟分组数据。以下代码生成3组&#xff08;A、B、C&#xff09;随机数据&#xff0c;每组包含10个样本&#xff1a; set.seed(123) # 确保可重复性 group_A <- rnorm(10, mean50, sd…

普罗米修斯监控CPU\内存汇聚图

要找出内存使用率大于80%的主机&#xff0c;你可以使用以下PromQL查询。这个查询会计算每个节点的内存使用率&#xff0c;然后筛选出使用率超过80%的节点&#xff1a; (avg by(nodename) ((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)* on(instance) group…

飞牛fnNAS手机相册备份及AI搜图

目录 一、相册安装应用 二、手机开启自动备份 三、开始备份 四、照片检索 五、AI搜图设置 六、AI搜图测试 七、照片传递 现代的手机,已经成为我们最亲密的“伙伴”。自从手机拍照性能提升后,手机已经完全取代了简单的卡片相机,而且与入门级“单反”相机发起了挑战。在…

华为高斯数据库(GaussDB)深度解析:国产分布式数据库的旗舰之作

高斯数据库介绍 一、高斯数据库概述 GaussDB是华为自主研发的新一代分布式关系型数据库&#xff0c;专为企业核心系统设计。它支持HTAP&#xff08;混合事务与分析处理&#xff09;&#xff0c;兼具强大的事务处理与数据分析能力&#xff0c;是国产数据库替代的重要选择。 产…

网页 CSS美化2(详解)

这是接着上一篇css基础的第二篇&#xff1a;主要开始对页面的布局进行学习 显示模式&#xff1a; 块级模式&#xff08;Block&#xff09; 特点 &#xff1a; 元素会独占一行&#xff0c;在其前后会自动换行&#xff0c;与其他块级元素在垂直方向上排列。 宽度默认为所在容器…

JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案

简介 JSON解析是现代应用开发中的基础操作,但在使用协程处理时,若调度器选择不当,会导致性能严重下降。特别是当使用Dispatchers.IO处理JSON解析时,可能触发线程池饥饿,进而引发ANR或系统卡顿。本文将深入剖析这一问题的技术原理,提供全面的性能检测方法,并给出多种优化…

python打卡第37天

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xff0c;加载权重后继续训练50轮&#xf…

【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt

在CCC单词搜索游戏中&#xff0c;单词隐藏在一个字母网格中。目标是确定给定单词在网格中隐藏的次数。单词可以以直线或直角的方式排列。以下是详细的解题思路及代码实现&#xff1a; 传送门&#xff1a; https://www.luogu.com.cn/problem/P9303 解题思路 输入读取与初始化&…

LangGraph + LLM + stream_mode

文章目录 LLM 代码valuesmessagesupdatesmessages updatesmessages updates 2 LLM 代码 from dataclasses import dataclassfrom langchain.chat_models import init_chat_model from langgraph.graph import StateGraph, STARTfrom langchain_openai import ChatOpenAI # 初…

Pydantic 学习与使用

Pydantic 学习与使用 在 Fastapi 的 Web 开发中的数据验证通常都是在使用 Pydantic 来进行数据的校验&#xff0c;本文将对 Pydantic 的使用方法做记录与学习。 **简介&#xff1a;**Pydantic 是一个在 Python 中用于数据验证和解析的第三方库&#xff0c;它现在是 Python 使…

批量文件重命名工具

分享一个自己使用 python 开发的小软件&#xff0c;批量文件重命名工具&#xff0c;主要功能有批量中文转拼音&#xff0c;简繁体转换&#xff0c;大小写转换&#xff0c;替换文件名&#xff0c;删除指定字符&#xff0c;批量添加编号&#xff0c;添加前缀/后缀。同时还有文件时…

多语言视角下的 DOM 操作:从 JavaScript 到 Python、Java 与 C#

多语言视角下的 DOM 操作&#xff1a;从 JavaScript 到 Python、Java 与 C# 在 Web 开发中&#xff0c;文档对象模型&#xff08;DOM&#xff09;是构建动态网页的核心技术。它将 HTML/XML 文档解析为树形结构&#xff0c;允许开发者通过编程方式访问和修改页面内容、结构和样…

【C/C++】红黑树学习笔记

文章目录 红黑树1 基本概念1.1 定义1.2 基本特性推理1.3 对比1.4 延伸1.4.1 简单判别是否是红黑树1.4.2 应用 2 插入2.1 插入结点默认红色2.2 插入结点2.2.1 插入结点是根结点2.2.2 插入结点的叔叔是红色2.2.3 插入结点的叔叔是黑色场景分析LL型RR型LR型RL型 3 构建4 示例代码 …

网络通信的基石:深入理解帧与报文

在这个万物互联的时代&#xff0c;我们每天都在享受着网络带来的便利——从早晨查看天气预报&#xff0c;到工作中的视频会议&#xff0c;再到晚上刷着短视频放松。然而&#xff0c;在这些看似简单的网络交互背后&#xff0c;隐藏着精密而复杂的数据传输机制。今天&#xff0c;…

STM32 SPI通信(硬件)

一、SPI外设简介 STM32内部集成了硬件SPI收发电路&#xff0c;可以由硬件自动执行时钟生成、数据收发等功能&#xff0c;减轻CPU的负担 可配置8位/16位数据帧、高位先行/低位先行 时钟频率&#xff1a; fPCLK / (2, 4, 8, 16, 32, 64, 128, 256) 支持多主机模型、主或从操作 可…

尚硅谷redis7-11-redis10大类型之总体概述

前提&#xff1a;我们说的数据类型一般是value的数据类型&#xff0c;key的类型都是字符串。 redis字符串【String】 string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。 string类型是Redis最基本的数据类型,一个redis中字符串va…

【递归、搜索与回溯算法】专题一 递归

文章目录 0.理解递归、搜索与回溯1.面试题 08.06.汉诺塔问题1.1 题目1.2 思路1.3 代码 2. 合并两个有序链表2.1 题目2.2 思路2.3 代码 3.反转链表3.1 题目3.2 思路3.3 代码 4.两两交换链表中的节点4.1 题目4.2 思路4.3 代码 5. Pow(x, n) - 快速幂5.1 题目5.2 思路5.3 代码 0.理…