专栏名称: 飞桨PaddlePaddle
源于产业实践的开源深度学习平台
目录
相关文章推荐
山西省人民政府  ·  山西这些集体、个人拟获全国表彰 ·  2 天前  
山西省人民政府  ·  今年山西第一批向民间资本推介项目名单公布 ·  3 天前  
山西省人民政府  ·  今年山西第一批向民间资本推介项目名单公布 ·  3 天前  
51好读  ›  专栏  ›  飞桨PaddlePaddle

PaddleMIX 2.1昇腾版发布 | 使用说明

飞桨PaddlePaddle  · 公众号  ·  · 2024-10-30 21:07

正文

PaddleMIX团队积极吸纳业界前沿的多模态大模型,并结合框架底层高性能硬核技术,推出飞桨多模态大模型开发套件 PaddleMIX 2.1 版本。该版本全面兼顾数据分析处理、高性能算法、便捷开发和高效训推,极大降低了业界多模态领域的开发门槛。为满足用户对AI芯片多样化的需求, PaddleMIX 团队依托飞桨框架在硬件兼容性和灵活性方面的优势,深度适配了昇腾910芯片,为用户提供了基于国产计算芯片的训推能力。用户只需按照安装说明安装多硬件版本的飞桨框架,并在模型配置文件中添加一个配置设备的参数,即可在相关硬件上使用PaddleMIX。PaddleMIX 2.1 昇腾版适配涵盖了多模态理解模型 InternVL2 、 LLaVA 和多模态生成模型 SD3 、 SDXL 。未来,我们将继续在用户使用的多种算力平台上适配 PaddleMIX 更多的模型,敬请期待。
图1 PaddleMIX 2.1 昇腾版模型库

安装说明

当前 PaddleMIX 支持昇腾 910B 芯片,昇腾驱动版本为 23.0.3。考虑到环境差异性,我们推荐使用飞桨官方提供的标准镜像(支持x86服务器与Arm服务器)完成环境准备。
  • 参考如下命令启动容器,ASCEND_RT_VISIBLE_DEVICES 指定可见的 NPU 卡号

docker run -it --name paddle-npu-dev -v $(pwd):/work --privileged --network=host --shm-size=128G -w=/work -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/dcmi:/usr/local/dcmi -e ASCEND_RT_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" registry.baidubce.com/device/paddle-npu:cann80T13-ubuntu20-$(uname -m)-gcc84-py39 /bin/bash
  • 在容器内安装飞桨

# 注意需要先安装飞桨 cpu 版本,目前仅支持python3.9版本python -m pip install --pre paddlepaddle -i https://www.paddlepaddle.org.cn/packages/nightly/cpu/python -m pip install --pre paddle-custom-npu -i https://www.paddlepaddle.org.cn/packages/nightly/npu/
  • 克隆PaddleMIX仓库

# 使用最新发布的release/2.1分支git clone https://github.com/PaddlePaddle/PaddleMIX -b release/2.1cd PaddleMIX
  • 安装依赖

sh build_env.shpython -m pip install -U librosa
 多模态理解
多模态大模型(Multimodal LLM)是当前研究的热点,在 2024 年迎来了井喷式的发展,它将多模态输入经由特定的多模态 encoder 转化为与文本对齐的 token ,随后将其输入到大语言模型中来执行多模态任务。PaddleMIX 2.1 新增了两大系列多模态大模型: InternVL2 系列和 Qwen2-VL 系列 ,同时支持指令微调训练和推理部署,模型能力覆盖了图片问答、文档图表理解、关键信息提取、场景文本理解、 OCR 识别、科学数学问答、视频理解、多图联合理解等。
InternVL2系列模型支持在昇腾 910B 芯片上训练和推理。使用昇腾 910B 芯片进行训练推理时,请先参考本文安装说明章节中的内容,安装相应版本的飞桨框架。InternVL2模型训练推理使用方法参考如下:
  • 微调训练:

    • 参照以下文档 进行数据准备

      https://github.com/PaddlePaddle/PaddleMIX/tree/release/2.1/paddlemix/examples/internvl2

    • 设置NPU相关环境变量

export FLAGS_use_stride_kernel=0export FLAGS_npu_storage_format=0 # 关闭私有格式export FLAGS_npu_jit_compile=0 # 关闭即时编译export FLAGS_npu_scale_aclnn=True # aclnn加速export FLAGS_npu_split_aclnn=True # aclnn加速export CUSTOM_DEVICE_BLACK_LIST=set_value,set_value_with_tensor # set_value加入黑名单
# 将ppdiffusers加入到PYTHONPATH中export PYTHONPATH=`pwd`/ppdiffusers:$PYTHONPATH
      • 执行微调训练,可以从以下链接 查看详细的参数说明

        https://github.com/PaddlePaddle/PaddleMIX/blob/release/2.1/paddlemix/tools/README.md

# 以2B权重为例子sh paddlemix/examples/internvl2/shell/internvl2.0/2nd_finetune/internvl2_2b_internlm2_1_8b_dynamic_res_2nd_finetune_full.sh
  • 推理:

      • 同样需要设置NPU相关的环境变量

      • 执行推理

python paddlemix/examples/internvl2/chat_demo.py \ --model_name_or_path "OpenGVLab/InternVL2-2B" \ --image_path 'paddlemix/demo_images/examples_image1.jpg' \ --text "Please describe this image in detail."

多模态生成
PPDiffusers 发布版本 0.29.0,新增图像生成模型 Stable Diffusion 3 (SD3) ,支持 DreamBooth 训练及高性能推理;SD3、SDXL 适配昇腾硬件,提供基于昇腾训练芯片的训推能力;PPDiffusers 提供了 SD3 的的个性化微调训练样例,只需要少量主题图像即可定制个性化 SD3 模型,支持 DreamBooth LoRA 微调及 DreamBooth 全参数微调。在推理方面,提供 SD3 模型高性能推理实现。 
多模态生成 Stable Diffusion系列模型支持在昇腾 910B 芯片上训练和推理。使用昇腾 910B 芯片进行训练推理时,请先参考本文安装说明章节中的内容,安装相应版本的飞桨框架。SDXL 模型训练推理使用方法参考如下:
  • 训练

    • 昇腾 910B 芯片上进行 SDXL 训练时设置相应的环境变量

export FLAGS_npu_storage_format=0export FLAGS_use_stride_kernel=0export FLAGS_npu_scale_aclnn=Trueexport FLAGS_allocator_strategy=auto_growth
export MODEL_NAME="stabilityai/stable-diffusion-xl-base-1.0"export VAE_NAME="madebyollin/sdxl-vae-fp16-fix"export DATASET_NAME="lambdalabs/naruto-blip-captions"export HF_ENDPOINT=https://hf-mirror.comexport FLAGS_conv_workspace_size_limit=4096
# 将ppdiffusers加入到PYTHONPATH中export PYTHONPATH=`pwd`/ppdiffusers:$PYTHONPATH
    • 启动 SDXL 微调训练

python -u ppdiffusers/examples/text_to_image/train_text_to_image_sdxl.py \ --pretrained_model_name_or_path=$MODEL_NAME \ --pretrained_vae_model_name_or_path=$VAE_NAME \ --dataset_name=$DATASET_NAME \ --resolution=512 --center_crop --random_flip \ --proportion_empty_prompts=0.2 \ --train_batch_size=1 \ --gradient_accumulation_steps=4 --gradient_checkpointing \ --max_train_steps=10000 \ --learning_rate=1e-06 --lr_scheduler="constant" --lr_warmup_steps=0 \ --mixed_precision="fp16" \ --report_to="wandb" \ --validation_prompt="a cute Sundar Pichai creature" --validation_epochs 5 \ --checkpointing_steps=5000 \ --output_dir="sdxl-pokemon-model"
    • 启动 SDXL LoRA 训练

python -u ppdiffusers/examples/text_to_image/train_text_to_image_lora_sdxl.py \ --pretrained_model_name_or_path=$MODEL_NAME \ --pretrained_vae_model_name_or_path=$VAE_NAME \ --dataset_name=$DATASET_NAME --caption_column="text" \ --resolution=1024 --random_flip \ --train_batch_size=1 \ --num_train_epochs=2 --checkpointing_steps=500 \ --learning_rate=1e-04 --lr_scheduler="constant" --lr_warmup_steps=0 \ --mixed_precision="fp16" \ --seed=42 \ --output_dir="sd-pokemon-model-lora-sdxl" \ --validation_prompt="cute dragon creature" \ --report_to="wandb"
  • 推理

    • 推理脚本参考如下 

from ppdiffusers import StableDiffusionXLPipelinefrom ppdiffusers import ( AutoencoderKL, StableDiffusionXLPipeline, UNet2DConditionModel,)import paddle
unet_path = "your-checkpoint/unet"pipe = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", paddle_dtype=paddle.float16)vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix")unet = UNet2DConditionModel.from_pretrained(unet_path)
prompt = "A pokemon with green eyes and red legs."image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]image.save("pokemon.png")

精彩课程预告

为了帮助您迅速且深入地了解 PaddleMIX 2.1 ,百度研发工程师将在 10月31日(周四)20:00 ,为您详细解读套件更新内容,以及多模态数据能力标签模型 PP-InsCapTagger 的实现细节和案例应用。赶快扫描下方海报二维码预约报名!







请到「今天看啥」查看全文