×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

VisCPM适配 在 寒武纪MLU370板卡上的试用(文生图 图生文) jyjyjyjyjy2023-07-28 13:23:59 回复 2 查看 经验交流 社区交流 干货资源
VisCPM适配 在 寒武纪MLU370板卡上的试用(文生图 图生文)
分享到:

VisCPM-Chat支持面向图像进行中英双语多模态对话。该模型使用Q-Former作为视觉编码器,使用CPM-Bee(10B)作为语言基座模型,并通过语言建模训练目标融合视觉和语言模型。模型训练包括预训练和指令精调两阶段。

  1. 适配链接:https://github.com/OpenBMB/VisCPM

  2. 依赖环境:

    组件

    版本

    torch-mlu1.14.0-torch1.9
    torchscale0.2.0  
    diffusers0.20.0.dev0
    VisCPM4974645c786edf

测试代码(图生文):

vlu_case1.png

“黄河之水天上来,奔流到海不复回。” 李白的这句诗可以用来形容这幅图片中的景象:一条汹涌澎湃、波涛汹涌的河流从天而降,撞击着岩石峭壁,形成了令人叹为观止的壮观场面。image.png


适配修改:先使用torch2mlu脚本

问题

解决

accelerate:AttributeError: module 'distutils' has no attribute 'version'
  1. pip uninstall setuptools

  2. pip install setuptools==59.5.0

bool问题

--- a/VisCPM/models/cpmbee.py
+++ b/VisCPM/models/cpmbee.py
@@ -1,4 +1,5 @@
import torch
+import torch_mlu
from typing import Optional, Tuple, List
from typing_extensions import TypedDict

@@ -260,7 +261,7 @@ class CPMBeeTorch(torch.nn.Module):
attention_mask = attention_mask & sample_mask_2d
# length mask
mask_1d = present_num_segments != 0
- attention_mask = mask_1d.view(batch, 1, len_buffer) & attention_mask
+ attention_mask = mask_1d.view(batch, 1, len_buffer) & attention_mask.bool()
if hidden_states is None:
hidden_states = self.input_ ding(input, input_sub)


Cannot set version_counter for inference tensor

diff --git a/VisCPM/generation/vllm_bee.py b/VisCPM/generation/vllm_bee.py
old mode 100644
new mode 100755
index d2820da..e628956
--- a/VisCPM/generation/vllm_bee.py
+++ b/VisCPM/generation/vllm_bee.py
@@ -1,6 +1,7 @@
from typing import Any, Dict, List, Tuple, Optional
import numpy as np
import torch
+import torch_mlu
import torch.nn.functional as F
import os

@@ -235,7 +236,8 @@ class VLLMCPMBeeGeneration:

model_inputs, other_info = self._process_list(data_list, max_inp_length)

- with torch.inference_mode():
+ with torch.no_grad():
+ #with torch.inference_mode():
if vision_hidden_states is None:
pixel_values = torch.stack(pixel_values).to(self.device)
model_inputs['pixel_values'] = pixel_values

import BMinf报错实际推理不会用到,注释掉
torch.frombuffer不加载safetensors类型的hf模型,改成.bin
torch.utils.data 找不到default_collate

xxx/python3.7/site-packages/torch/utils/data/__init__.py

from torch.utils.data.dataloader import DataLoader, _DatasetKind, get_worker_info, default_collate


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭