人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载disco_diffusion_cnclip_vitb16 是 PaddleFormers 仓库基于 PaddlePaddle 的预训练模型库生态中提供的一个文图生成text-to-image模块。它通过扩散模型 中文 CLIPCN-CLIP ViT-B/16的组合将中文 prompt 描述转化为符合语义的图像。本文以该模块的 README_en.md 为核心结合模块源码 module.py 与底层运行实现 reverse_diffusion/runner.py系统讲解模型原理、安装、命令行与 Python API 预测、关键生成参数调优以及 PaddleHub Serving 在线部署帮助你直接用中文 prompt 生成并落地一套可复用的文生图推理方案。一、模块基本信息与工作原理1.1 模块概览模块的基本信息如下来自 README_en.md项目内容模块名称disco_diffusion_cnclip_vitb16类别文图生成text to image网络结构DDDisco Diffusion CN-CLIP ViT-B/16数据集-是否支持 Fine-tuning否模型大小2.9GB最新更新日期2022-08-02数据指标-模块在源码中以moduleinfo装饰器注册为paddlehub模块名称为disco_diffusion_cnclip_vitb16、版本号1.0.0、类型image/text_to_image核心类为DiscoDiffusionClip见 module.py。该模块不支持 Fine-tuning主要面向开箱即用的推理与在线服务场景。1.2 工作原理扩散模型 CLIP 语义引导该模块由两部分核心模型组成扩散模型Diffusion Model一种生成式模型能够从噪声输入中逐步重建去噪出图像。它负责从初始噪声或用户指定的初始图像出发迭代生成目标图像。多模态预训练模型 CLIP能够把文本和图像映射到同一个特征空间语义相近的文本与图像在该特征空间中距离更近。本模块使用的是CN-CLIP ViT-B/16结构其视觉分支为 ViT-B/16文本分支为 RoBERTa-wwm-ext-base-chinese见 cn_clip/clip/utils.py 中的_MODEL_INFO与 model_configs/ViT-B-16.json。生成过程中扩散模型负责生成图像CLIP 负责引导生成图像的语义尽可能接近输入文本的语义在每个去噪时间步timestep上图像被切分为若干cuts图像切片分别编码后与文本 prompt 的 CLIP 嵌入计算球面距离损失通过梯度把去噪方向拉向文本语义见 reverse_diffusion/runner.py。随着迭代推进最终生成文本所描述内容的图像。该思路的学术背景可参考两篇论文Diffusion Models Beat GANs on Image Synthesis与Learning Transferable Visual Models From Natural Language SupervisionREADME 中已给出 arXiv 链接此处不重复外部链接。二、环境依赖与模块安装2.1 环境依赖运行该模块需要满足以下基础环境paddlepaddle 2.0.0paddlehub 2.2.0同时模块自身还有额外的 Python 依赖见 requirements.txt主要包括numpy、paddle_lpips0.1.2用于初始图像相似度损失、ftfy、docarray0.13.29结果对象容器、pyyaml、regex、tqdm、ipywidgets迭代过程可视化。PaddleHub 的安装指引可参考 docs/docs_en/get_start/installation.rst不同平台的零基础安装教程见 Windows_Quickstart、Linux_Quickstart、Mac_Quickstart。2.2 安装模块执行以下命令安装模块$ hub install disco_diffusion_cnclip_vitb16如需安装指定版本当前仓库发布版本为 1.0.0$ hub install disco_diffusion_cnclip_vitb16 1.0.0安装时若遇到问题可参考上述平台快速开始文档排查环境配置。三、模块 API 预测3.1 命令行预测安装完成后可以通过hub run直接进行命令行预测$ hub run disco_diffusion_cnclip_vitb16 --text_prompts 孤舟蓑笠翁独钓寒江雪。风格如齐白石所作。 --output_dir disco_diffusion_cnclip_vitb16_out命令行模式由模块的run_cmd方法承载见 module.py它会把命令行的--text_prompts、--style、--artist、--steps、--seed等参数解析后传递给generate_image并将生成结果以 DocumentArray 形式返回。除--text_prompts为必填输入外其余均为可选配置项。3.2 Python 代码预测更灵活的方式是直接在 Python 中调用import paddlehub as hub module hub.Module(namedisco_diffusion_cnclip_vitb16) text_prompts [孤舟蓑笠翁独钓寒江雪。] # 生成图像默认会在 disco_diffusion_cnclip_vitb16_out 目录保存图像 # 返回的 da 是一个 DocumentArray 对象保存了所有结果最终结果和迭代过程的中间结果 # 可以通过操作 DocumentArray 对象对生成的图像做后处理、保存或者分析 da module.generate_image(text_promptstext_prompts, artist齐白石, output_dir./disco_diffusion_cnclip_vitb16_out/) # 手动将最终生成的图像保存到指定路径 da[0].save_uri_to_file(disco_diffusion_cnclip_vitb16_out-result.png) # 展示所有的中间结果 da[0].chunks.plot_image_sprites(skip_emptyTrue, show_indexTrue, keep_aspect_ratioTrue) # 将整个生成过程保存为一个动态图 gif da[0].chunks.save_gif(disco_diffusion_cnclip_vitb16_out-result.gif)3.3 generate_image 核心 API 说明generate_image的对外接口声明如下见 module.pydef generate_image( text_prompts, style: Optional[str] None, artist: Optional[str] None, init_image: Optional[str] None, width_height: Optional[List[int]] [1280, 768], skip_steps: Optional[int] 0, steps: Optional[int] 250, cut_ic_pow: Optional[int] 1, init_scale: Optional[int] 1000, clip_guidance_scale: Optional[int] 5000, tv_scale: Optional[int] 0, range_scale: Optional[int] 0, sat_scale: Optional[int] 0, cutn_batches: Optional[int] 4, diffusion_sampling_mode: Optional[str] ddim, perlin_init: Optional[bool] False, perlin_mode: Optional[str] mixed, seed: Optional[int] None, eta: Optional[float] 0.8, clamp_grad: Optional[bool] True, clamp_max: Optional[float] 0.05, randomize_class: Optional[bool] True, clip_denoised: Optional[bool] False, fuzzy_prompt: Optional[bool] False, rand_mag: Optional[float] 0.05, cut_overview: Optional[str] [12]*400[4]*600, cut_innercut: Optional[str] [4]*400[12]*600, cut_icgray_p: Optional[str] [0.2]*400[0]*600, display_rate: Optional[int] 10, n_batches: Optional[int] 1, batch_size: Optional[int] 1, batch_name: Optional[str] , use_gpu: Optional[bool] True, output_dir: Optional[str] disco_diffusion_cnclip_vitb16_out):核心参数参数类型/默认值说明text_promptsstr / List[str]必填描述目标图像内容的 prompt。推荐构造方式为 描述性文字内容 指定艺术家/风格例如 孤舟蓑笠翁独钓寒江雪。风格如齐白石所作。当传入字符串时模块会先去除末尾的逗号/句号再按规则拼接style与artist见 module.pystyleOptional[str]默认 None指定绘画风格如水墨画、油画、水彩画。不指定时风格完全由 prompt 决定artistOptional[str]默认 None指定艺术家如 齐白石、Greg Rutkowsk生成对应绘画风格。指定后模块会拼接 由{artist}所作init_imageOptional[str]默认 None初始图像路径。提供后扩散将以此图像而非纯噪声为起点通常需要同步调高skip_steps至总步数约 50% 以保留初始图像特征width_heightList[int]默认 [1280, 768]输出图像的宽和高建议为 64 的倍数尺寸越大计算时间越长seedOptional[int]默认 None随机种子。由于默认输入为随机高斯噪声不同种子对应不同初始输入从而生成不同结果固定种子可用于复现相似结果output_dirstr默认 disco_diffusion_cnclip_vitb16_out输出图像保存目录返回对象返回值是一个DocumentArray对象包含n_batches个 Document其中每个 Document 都保存了迭代过程中的所有中间结果作为chunks可用da[0].save_uri_to_file(...)保存最终图像、da[0].chunks.plot_image_sprites(...)展示中间结果拼图、da[0].chunks.save_gif(...)把生成过程保存为 gif。DocumentArray 的详细操作可参考 docarray 的官方文档README 中已给出链接。四、生成效果调优参数解析源码级generate_image除了上述核心参数外还暴露了大量源自 Disco Diffusion 的调优参数。这些参数直接影响生成质量、速度与显存占用且在命令行模式中同样可用参数定义见 module.py 的add_module_config_arg/add_module_input_arg。下面按作用域分组说明4.1 扩散迭代控制steps默认 250去噪曲线被细分的迭代步数。步数越多每步调整越小、图像越精细但渲染时间线性增加超过 250500 步后收益递减。skip_steps默认 0跳过的早期去噪步数。早期噪声强度高、图像变化剧烈跳过约 10%15% 的步数通常不影响最终结果可用于缩短渲染时间使用init_image时需跳过约 50% 的步数以保留初始图像结构。eta默认 0.8每个时间步混入的缩放噪声量0 表示不混入、1.0 表示更多噪声。eta0时约 5075 步即可获得不错效果eta1.0建议配合 250 步以上使用。diffusion_sampling_mode默认 ddim扩散去噪算法可选ddim更成熟稳定与plms更新、可用更少步数但测试较少。runner 中按此选择ddim_sample_loop_progressive或plms_sample_loop_progressive见 reverse_diffusion/runner.py。4.2 CLIP 引导强度clip_guidance_scaleCGS默认 5000最重要的参数之一控制每个时间步 CLIP 向 prompt 靠拢的强度。过高会过冲导致图像失真通常随图像尺寸增大而按比例调高如 512×512 到 512×768 可把 5000 提到 7500。init_scale默认 1000CLIP 匹配init_image的强度与 CGS 相互制衡过大图像变化小过小则初始图像特征丢失。clamp_grad默认 True/clamp_max默认 0.05梯度裁剪限幅防止生成极端结果clamp_max提到 0.150.3 可增加对比度与活力。runner 中按grad * magnitude.clip(maxclamp_max) / magnitude实现见 reverse_diffusion/runner.py。fuzzy_prompt默认 False/rand_mag默认 0.05开启后为 prompt 添加多个带噪声的嵌入参与损失计算可增加输出多样性rand_mag控制所加随机噪声的幅度。4.3 图像质量与后处理损失tv_scale默认 0全变差去噪强度控制最终输出平滑度图像过脆噪点重时可调高置 0 关闭。range_scale默认 0颜色对比度调节值越低对比度越强海报感越高越柔和置 0 关闭。sat_scale默认 0饱和度调节图像过饱和时调高以降低饱和度置 0 关闭。cut_ic_pow默认 1内部切片的边界尺寸值越大内切越小、细节越精细但过大可能产生马赛克效应。以上tv_loss、range_loss、饱和度损失与init_scale对应的 LPIPS 损失会在cond_fn中叠加进梯度见 reverse_diffusion/runner.py。4.4 切片cuts调度与计算开销cutn_batches默认 4每时间步把 N 次切片评估分成若干小批顺序执行可在不显著增加显存的前提下提高总切片数默认调度 16 切/时间步cutn_batches4时共 64 切但显存仅按 16 切占用代价是约 4 倍渲染时间。cut_overview默认[12]*400[4]*600/cut_innercut默认[4]*400[12]*600/cut_icgray_p默认[0.2]*400[0]*600概述切与内切在扩散全程的调度表以及内切灰度概率按字符串表达式求值后按时间步索引见 reverse_diffusion/runner.py 与 make_cutouts.py。display_rate默认 10每隔多少步输出一次中间过程图便于提前观察生成走向并及时调整参数。n_batches默认 1一次调用生成的图像数量batch_size默认 1每批图像数。perlin_init默认 False/perlin_mode默认 mixed使用 Perlin 噪声作为扩散起点会覆盖init_imageperlin_mode可选彩色/灰度/混合。五、PaddleHub Serving 在线服务部署PaddleHub Serving 可以把该文生图模块部署为在线服务便于以 HTTP 接口对外提供预测能力。5.1 第一步启动 PaddleHub Serving$ hub serving start -m disco_diffusion_cnclip_vitb16启动后即完成一个文生图在线服务的部署默认端口号为 8866。NOTE若使用 GPU 预测需在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量例如CUDA_VISIBLE_DEVICES0不使用 GPU 时无需设置。服务内部通过serving_method见 module.py调用generate_image并把结果 DocumentArray 编码为 base64 返回。5.2 第二步发送预测请求服务端配置完成后用以下代码即可发送 HTTP 预测请求并处理返回结果import requests import json import cv2 import base64 from docarray import DocumentArray # 发送HTTP请求 data {text_prompts: 孤舟蓑笠翁独钓寒江雪。风格如齐白石所作} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/disco_diffusion_cnclip_vitb16 r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 获取返回结果 da DocumentArray.from_base64(r.json()[results]) # 手动将最终生成的图像保存到指定路径 da[0].save_uri_to_file(disco_diffusion_cnclip_vitb16_out-result.png) # 将生成过程保存为一个动态图gif da[0].chunks.save_gif(disco_diffusion_cnclip_vitb16_out-result.gif)返回结果经反序列化后即 DocumentArray 对象后续操作方式与本地调用generate_image完全一致。六、底层实现速览可选深入若希望进一步理解生成管线可沿以下源码路径深入模块入口与参数转发module.py 中的DiscoDiffusionClip负责设备设置use_gpu时通过CUDA_VISIBLE_DEVICES指定 GPU、prompt 拼接与全部参数转发。模型加载reverse_diffusion/init.py 的create()调用 helper.py 中的load_all_models/load_diffusion_model/load_clip_models加载扩散模型与 CLIP 模型扩散模型默认使用512x512_diffusion_uncond_finetune_0081001000 扩散步、250 重采样步。配置默认值reverse_diffusion/config.py 从resources/default.yml读取默认配置并对seed、width_height等做类型规整与默认随机种子生成。生成主循环reverse_diffusion/runner.py 的do_run实现噪声/初始图像准备、cond_fn引导梯度计算、DDIM/PLMS 采样循环以及中间结果的 Document 收集。CN-CLIP 模型cn_clip/clip/utils.py 通过create_model依据_MODEL_INFOViT-B-16 RoBERTa-wwm-ext-base-chinese加载预训练权重tokenizer 实现见 cn_clip/clip/bert_tokenizer.py。七、版本与更新历史当前仓库中该模块的发布版本为1.0.0初始发布对应安装命令$ hub install disco_diffusion_cnclip_vitb16 1.0.0结语disco_diffusion_cnclip_vitb16 为中文用户提供了一条中文 prompt 直达图像的低门槛路径底层是扩散模型负责生成、CN-CLIP ViT-B/16 负责语义引导的双引擎架构使用层面则同时支持命令行、Python API 与 PaddleHub Serving 在线服务三种方式。结合本文给出的参数说明尤其是steps、skip_steps、clip_guidance_scale、width_height等对质量与速度影响最大的配置你可以在 module.py 暴露的全部参数范围内进行快速实验找到适合自己创作需求的组合。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleHub disco_diffusion_clip_rn101 文图生成模块实战从安装到 CLIP 引导扩散的完整指南PaddleHub disco_diffusion_clip_rn101 文图生成模块实战从安装到 CLIP 引导扩散的完整指南 本篇技术指南围绕 Paddl人工智能大模型微调模型推理服务PaddleFormers 中 disco_diffusion_cnclip_vitb16 文图生成模型实战指南原理、API 调用与 Serving 部署PaddleFormers 中 disco_diffusion_cnclip_vitb16 文图生成模型实战指南原理、API 调用与 Serving 部署 本人工智能大模型微调模型推理服务PaddleFormers 文图生成实战disco_diffusion_ernievil_base 扩散模型与 ERNIE-ViL 语义引导详解PaddleFormers 文图生成实战disco_diffusion_ernievil_base 扩散模型与 ERNIE ViL 语义引导详解 本指南围绕人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
