unilm 文本扩散器:TypeError:get_down_block()收到了一个意外的关键字参数'attn_num_head_channels'

z3yyvxxp  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(65)

你好,

我正在尝试运行textdiffusers,并遵循了所有说明。
当我使用:

accelerate launch train.py \
    --train_batch_size=24 \
    --gradient_accumulation_steps=4 \
    --gradient_checkpointing \
    --mixed_precision="fp16" \
    --num_train_epochs=2 \
    --learning_rate=1e-5 \
    --max_grad_norm=1 \
    --lr_scheduler="constant" \
    --lr_warmup_steps=0 \
    --output_dir="experiment_name" \
    --enable_xformers_memory_efficient_attention \
    --dataloader_num_workers=4 \
    --character_aware_loss_lambda=0.01 \
    --resume_from_checkpoint="latest" \
    --drop_caption \
    --mask_all_ratio=0.5 \
    --segmentation_mask_aug \
    --vis_num=8

时出现问题:
TypeError: get_down_block() got an unexpected keyword argument 'attn_num_head_channels'
(完整的错误报告在最后)
我知道问题所在,仓库要求从diffusers的源代码安装。
文件:"./textdiffuser/diffusers/src/diffusers/models/unet_2d_condition.py"
第291行调用"get_down_block",并传入一个参数"attn_num_head_channels",这在当前版本的diffusers中不存在。
因此,如果作者能分享他们使用的diffusers版本,那就太好了。
环境:
Ubuntu18.04
torch==1.13.1
torchvision==0.14.1
transformers==4.27.4
diffusers : -e git+https://github.com/huggingface/diffusers@fc6acb6b97e93d58cb22b5fee52d884d77ce84d8#egg=diffusers
完整的错误报告:
File "train.py", line 506, in main unet = UNet2DConditionModel.from_pretrained( File "/workspace/unilm/textdiffuser/diffusers/src/diffusers/models/modeling_utils.py", line 563, in from_pretrained model = cls.from_config(config, **unused_kwargs) File "/workspace/unilm/textdiffuser/diffusers/src/diffusers/configuration_utils.py", line 232, in from_config model = cls(**init_dict) File "/workspace/unilm/textdiffuser/diffusers/src/diffusers/configuration_utils.py", line 604, in inner_init init(self, *args, **init_kwargs) File "/workspace/unilm/textdiffuser/diffusers/src/diffusers/models/unet_2d_condition.py", line 291, in __init__ down_block = get_down_block( TypeError: get_down_block() got an unexpected keyword argument 'attn_num_head_channels'
感谢你的帮助!

t9aqgxwy

t9aqgxwy1#

非常感谢您关注我们的工作!实际上,有几个关于替换文件的操作。您完成了这些操作吗?此外,在我的环境里,版本扩散器包是0.17.0.dev0。供您参考!

23c0lvtd

23c0lvtd2#

是的,我做了。
让我们继续讨论流程,一个使用你特定的:unet_2d_condition.py,第291行:
down_block = get_down_block( down_block_type, num_layers=layers_per_block, in_channels=input_channel, out_channels=output_channel, temb_channels=blocks_time_embed_dim, add_downsample=not is_final_block, resnet_eps=norm_eps, resnet_act_fn=act_fn, resnet_groups=norm_num_groups, cross_attention_dim=cross_attention_dim[i], **attn_num_head_channels=attention_head_dim[i],** downsample_padding=downsample_padding, dual_cross_attention=dual_cross_attention, use_linear_projection=use_linear_projection, only_cross_attention=only_cross_attention[i], upcast_attention=upcast_attention, resnet_time_scale_shift=resnet_time_scale_shift,
这个函数调用从unet_2d_blocks.py文件中调用get_down_block,并带有attn_num_head_channels参数。当前版本的diffusers ,在unet_2d_blocks.py的第32行,def get_down_block函数没有任何attn_num_head_channels参数。
https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_blocks.py

ghhaqwfi

ghhaqwfi3#

我浏览了仓库https://github.com/huggingface/diffusers,发现"attn_num_head_channels"最近被移除了。或者,你可以使用以下命令安装扩散器:

git clone https://github.com/JingyeChen/diffusers
cd diffusers
pip install -e .

希望这对你有帮助!

相关问题