您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[腾讯]:AI2.0时代如何通过AIGC打造爆款营销内容? - 发现报告
当前位置:首页/行业研究/报告详情/

AI2.0时代如何通过AIGC打造爆款营销内容?

信息技术2023-07-06腾讯学***
AI2.0时代如何通过AIGC打造爆款营销内容?

StableDiffusion基本原理介绍 导师介绍 刘远johanyliu 10年+互联网从业经验,精通云原生,拥有丰富的微服务、大数据、机器学习开发和架构经验 腾讯云泛互联网 行业技术专家 目录Menu ·Diffusionmodel运行机制 ·StableDiffusionmodel模块分析 什么是StableDiffusion 文生图:根据文本提示作为输入来生成的图像(输入为文本) 图生图:对图像根据文字描述进行修改(输入为文本+图像) StableDiffusion系统架构图 •每张图片都满足一定的规律分布,利用文本中包含的分布信息作为指导,将纯噪声的图片逐步去噪,生成一张跟文本信息匹配的图片 •StableDiffusion是一个组合系统,包含了多个模型子模块,组成扩散Pipeline 我们需要什么 ·一种生成图片的神经网络训练方法——寻找分布的方法 ·一种连接文字和图片的方法——多模态连接的方法 ·一种压缩和解压缩图片的方法——加速训练的方法 Diffusionmodel运行机制 扩散模型——Diffusion 1.寻找分布的方法 •前向扩散过程(ForwardDiffusionProcess)向图片中逐渐引入噪声来破坏图像,直到图像变成完全随机的噪声 •后向扩散过程(BackwardDiffusionProcess)使用一系列马尔可夫链逐步去除预测噪声,从高斯噪声中生成图片 •扩散过程由Unet网络和采样器(scheduler算 法)共同完成,在Unet网络中一步步执行生成过程,其中采样器控制去噪方法和强度 数据集生成 不断地向图片中添加不同强度的噪音(强度由采样器timestep控制),为数据集中每一个图片都生成N个训练示例 模型训练 使用上一步的数据集,对Unet模型进行训练,使用真实噪声标签作比较来反向传播更新,训练出“噪声预测器” 加入文本条件 将文本信息作为附加控制向量,加入到模型向量中,通过注意力机制得到一个具有丰富语义信息的隐空间向量,引导图像往文本向量(Prompt)方向生成 降噪绘图 利用随机种子产出固定维度的噪声,使用训练好的Unet模型结合采样器,从每一步输出的样本中去掉噪音,得到具有文本信息的图像表征 Unet网络 •StableDiffusion里的Unet模型采用Encoder-Decoder结构来预估噪声 •使用DownSample和UpSample进行样本的下上采样,采样模块之间的ResBlock和SpatialTransformer,分别接收timesteps(采样器使用)和文本信息作为输入 •ResBlock不直接处理文本向量,由SpatialTransformer混合进潜空间向量,在下一层得以应用 Unet模型输入包括三部分 a.图像潜空间向量【batchsize,隐空间通道,图片高度/8,图片宽度/8】 b.timesteps【batchsize】 c.文本信息向量【batchsize,文本最大编码长度,向量大小】 StableDiffusion模块分析 StableDiffusion •为Unet模型添加条件控制机制(text、images、inpainting) •在潜空间进行diffusion过程,而不是像素空间 CLIP模型 2.多模态连接的方法 •CLIP是图像Encoder和文本Encoder的组合,CLIP训练时分别对图像和文本进行编码,使用余弦相似度进行对比,反向更新两个Encoder的参数 •完成训练后,输入配对的图片和文字,两个encoder就可以输出相似的embedding向量,输入不匹配的图片和文字,两个encoder输出向量的余弦相似度就会接近于0 •推理时,输入文字通过CLIP转化为embedding,映射进Unet注意力层,和图片相互作用 变分自编码器VAE 3.加速训练的方法 为了加快图像生成过程,StableDiffusion没有在像素图像上进行运行,而是在图像的压缩版本(潜空间)上运行。 模型学习时,将图像的尺寸先减小再恢复到原始尺寸。使用解码器从压缩数据中重建图像时,会同时学习之前的所有相关信息。 感谢观看! Thankyou StableDiffusion腾讯云云原生容器部署实践 分享大纲 云原生网关 TKE qGPU 算力/显存切分 AI推理容器 AI推理容器(TACO加速) 1.使用腾讯云TKE+CFS部署StableDiffusion TCR 容器镜像 2.通过腾讯云云原生API网关对外提供SD服务 3.通过qGPU提升推理服务并发性能 HCC HCC GPU计算集群GPU计算集群 GPU计算集群 CFS并行文件系 统 SD模型文件 4.通过TACO优化推理速度 使用腾讯云TKE+CFS部署StableDiffusion TKE:基于原生K8S提供以容器为核心的解决方案 POD POD POD POD POD POD POD POD POD POD POD POD TKE托管集群TKEServerless集群 CVM普通节点 CVM原生节点 超级节点 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 超级节点 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 超级节点 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 POD 轻量虚拟机 UserZoneA UserZoneA UserZoneA UserZoneB •按照集群资源付费 •需要运维集群节点 •容器共享OS内核 •安全隔离性弱 •按照Pod资源付费 •无需运维集群节点、极致弹性 •容器独立内核 •虚拟机级别隔离性 容器存储方案 块存储CBS-CSI •支持TKE集群通过控制台快捷选择存储类型,并创建对应块存储云硬盘类型的PV和PVC。 •支持拓扑感知、在线扩容、快照和恢复。 •适合POD单挂,低延迟,高IOPS场景。 网络文件系统CFS-CSI •通过CFS-CSI扩展组件,您可以快速在容器集群中通过标准原生Kubernetes使用CFS。 •支持标准存储和性能存储。 •适合POD多挂,CVM和POD共享文件,无需扩容。 对象存储COS-CSI •通过COS-CSI扩展组件,您可以快速的在容器集群中通过标准原生Kubernetes以COSFS的形式使用COS。 •适合程序使用文件系统访问cos里面的文件。 准备待部署SD的TKE集群 1.开通并创建TKE集群 2.集群选择托管类型,Worker节点选择【GPU计算型PNV4】-A10,安装GPU470驱动,CUDA版本11.4.3,cuDNN版本8.2.4,见下图。 3.根据部署对GPU共享的需求,可选择开启qGPU。 使用CFS保存SD模型文件 1.创建存放模型的文件存储CFS 2.选择与集群相同的VPC和子网,开通CFS服务。 3.在CFS远程挂载点,新建/models/Stable-diffusion目录。下载v1-5-pruned-emaonly.safetensors模型文件至/models/Stable-diffusion 通过TKE挂载CFS 1.在TKE控制台上,创建CFS类型StorageClass,选择共享实例 2.使用CFS里新建的/models/Stable-diffusion目录,以及上面的StorageClass,静态创建PV&PVC 创建SDWebUI工作负载 1.在TKE控制台上,选择【工作负载】-【Deployment】-【新建】,部署SD-webui镜像 2.在部署页面里,【数据卷】选择【添加数据卷】。【使用已有PVC】方式,添加前面创建的PVC 3.【实例内容器】-【镜像】部分,选择已保存在TCR里的stable-diffusion-webui镜像 4.将GPU资源的卡数设置为1,如果开启了qGPU,这里还可以填写0.1-1之间的数值 5.创建Deployment对应的Service,选择【公网LB访问】,对外暴露7860端口访问 6.通过CLB公网IP地址,访问SDWebUI服务。如果有限流或访问控制需求,推荐选择云原生网关 通过腾讯云云原生API网关对外提供SD服务 云原生API网关:云上微服务架构的流量入口 调用者开发者 客户端 路由转发 认证鉴权 参数转换 日志 监控 限流、缓存插件⋯ 业务后端 其他公网URL/IP 微服务平台TSF 弹性容器服务EKS 容器集群TKE 云主机CVM 客户端 第三方合作伙伴 小程序 手机APP Web浏览器 请求转发请求 响应后端响应 云原生API网关(Cloud-NativeAPIGateway)是腾讯云基于开源网关推出的一款高性能高可用的API生命周期管理产品,100%完美兼容开源网关Kong的API,减少用户自建网关的开发及运维成本。 通过云原生API网关对外提供SD服务 1.开通云原生网关,选择和TKE集群、CFS同VPC的实例 2.在网关控制台上,选择【路由管理】-【服务来源】,绑定TKE集群 3.选择【路由管理】-【服务】,新建网关服务。在【服务列表】中,选择部署Deployment时启用的Service进行映射 4.点击服务名,新建访问路由。将请求方法设置为【ANY】,Host填写云原生网关的公网IP 5.StableDiffusionWebUI出图时会进行多轮请求,将Deployment的Pod副本数量修改为大于1时,还需要配置Session会话保持,保证同一IP的客户请求落在相同的Pod里。选择【路由管理】-【Konga控制台】,找到Konga公网访问地址,在Konga控制台里找到【UPSTREAM 】,点击【DETAILS】,在【HASHON】下拉框里,选择【IP】,完成基于客户端IP的会话保持配置 通过qGPU提升推理服务并发性能 qGPU:GPU共享技术 qGPU是腾讯云推出的GPU共享技术,支持在多个容器间共享GPU卡并提供容器间显存、算力强隔离的能力,从而在更小粒度的使用GPU卡的基础上,保证业务安全,达到提高GPU使用率、降低客户成本的目的。 ·灵活性:自由配置GPU显存大小和算力占比 ·云原生:支持标准Kubernetes和NVIDIADocker ·兼容性:业务不重编、CUDA库不替换、业务无感 ·高性能:GPU设备底层虚拟化,高效收敛,吞吐接近0损耗 ·强隔离:支持显存和算力的严格隔离 StableDiffusion使用qGPU StableDiffusionWebUI服务以串行方式处理请求,如果希望增加推理服务并发性能,可以考虑扩展Deployment的Pod数量,以轮询的方式响应请求。这里我们采用TKEqGPU能力,将多个实例Pod运行在同一张A10卡上,在保障业务稳定性的前提下,切分显卡资源,降低部署成本。 采用qGPU方式,需要先将Pod的资源申请方式进行修改。如果计划单卡上部署2个Pod,将卡数改为50%的算力分配,显存设置为A10显存的一半。DeploymentYAML更新完成后,调整Pod数量为2个,即可实现负载均衡的StableDiffusion轮询模式 通过TACO优化推理速度 TACO:优化StableDiffusion推理性能 腾讯云计算加速套件TACOKit(TencentCloudAcceleratedComputingOptimizationKit)是一种异构计算加速软件服务,具备领先的GPU共享技术和业界唯一的GPU在离线混部能力,搭配腾讯自研的软硬件协同优化组件和硬件厂商特有优化方案,支持物理机、云服务器、容器等产品的计算加速、图形渲染、视频转码各个应用场景,帮助用户实现全方位全场景的降本增效。在StableDiffuison场景中,可以实现模型的前向推理能力提升,出图由原来的约2秒缩短到1秒 StableDiffusion是一个多模型组成的扩散Pipelin