您的当前位置:首页 > 报告分类 > PDF报告下载

大淘宝技术:2023技术人的百宝黑皮书(1154页).pdf

编号:151877 PDF  DOCX 1154页 55.25MB 下载积分:VIP专享
下载报告请您先登录!

大淘宝技术:2023技术人的百宝黑皮书(1154页).pdf

1、前言叙述一段历史,历史学家们往往会锁定一个时间维度上的“重要节点”。走过这个节点,世界的风向、社会的信念、人们对未来的态度发生改变,世界可以清晰地被分为“之前”与“之后”。回望淘宝的技术历史,2008年,淘宝率先提出并实践去IOE,逐步掌握中国企业互联网技术发展的命脉自主权;2010年手机淘宝上线,淘宝进入移动电商时代;2019年,双11核心系统100%上云,电商应用架构全面拥抱云技术行至2023这一年,我们确凿无疑地看到,以AI人工智能为代表的新技术正成为全球商业发展的新动能。幸运的是,过去24年我们曾积累下丰富的用户场景与行业经验,每一份文字、图像、视频、代码、数据,一片片构筑起我们未来想

2、象力的基石,为AI技术提供最佳的应用场。今年天猫双11,面向商家和消费者的一系列围绕AI的探索创新产品陆续落地。这是AI技术在电商领域的首次大规模应用,我们也积攒下点点滴滴的新思考和新沉淀。所以,我们在这里相遇了。这里是淘天业务技术2023一整年的精华技术内容合集,涵盖了AIGC与大模型、终端技术、服务端架构、数据算法等多个技术领域,沉淀了淘宝直播、购物车、拍立淘等多个业务的技术解决方案,细小的改变背后是对技术深度理解的体现,也是对用户体验与用户价值的纵深追求。我们希望能将这份知识沉淀和价值追求共享给你,并怀抱着开放自由的交流心态,真诚期望与大家沟通和共鸣。本书内容页数1000+、全部内容将近

3、40w字。希望你喜欢,并分享给身边的朋友。新年快乐!淘天集团的核心技术团队,支撑着淘宝、天猫等核心电商业务。依托淘天集团丰富的业务形态和海量的用户,大淘宝技术通过持续的技术创新和突破,不断探索和衍生颠覆性互联网新体验技术,以更加智能、友好、普惠的科技帮助商家更好的经营,让用户享受更好的消费体验。随着电商业务的持续探索与快速发展,我们不断吸引算法、大数据、音视频通信、端侧智能、3DXR、终端、服务端等技术领域全球顶尖专业人才加入,让科技引领面向未来的商业创新和进步。扫一扫,关注我们公众号不错过下一年的技术风景CONTENTS目录第一部分年度精选技术栈内容基于AIGC的3D场景创作引擎概述探索 S

4、tableDiffusion:生成高质量图片学习及应用基于Stable Diffusion的AIGC服饰穿搭实践AIGC生成3D模型探索与实践FlashAttention2原理解析以及面向AIGC的加速实践AIGC技术在淘淘秀场景的探索与实践AIGC图像生成的原理综述与落地畅想从零开始的stable diffusionPrompt设计与大语言模型微调大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析GPT Prompt编写的艺术:如何提高AI模型的表现力Stable Diffusion WebUI 从零基础到入门技术新浪潮:正在崛起的AI工程师LangChain

5、:大语言模型的新篇章021848627189100119133156189212222229AIGC与大模型篇前端智能化在淘宝的2022实践总结淘宝widget链路方案总结淘宝HTTP3/QUIC技术演进与实践天猫汽车商详页的SSR改造实践SSR在天猫优品大促会场的探索实践JVMTI 在淘宝 Profiler 中的应用淘宝首页大促新玩法“猫头”背后的技术挑战和设计淘宝小游戏背后的质量保障方案2023 年大淘宝 Web 端技术概览基于 Git 的开发工作流主干开发特性总结开放网关架构演进跨端架构下客户端侧API维护方案总结移动端浏览器性能优化探索淘宝 APP 网络架构演进与弱网破障实践低代码逻辑

6、编排观:PlayMaker前端如何做好用户体验?前端工程中的设计模式应用iOS Crash 治理:淘宝VisionKitCore 问题修复261287296309319325343357370394400408421430451462479541终端技术篇Hologres RoaringBitmap实践:千亿级画像数据秒级分析在淘宝,商品技术团队每天都在干什么?在淘宝,营销技术团队如何支持双11?认识 WebAssembly 与 Rust 实践一个服务端同学的Vue框架入门及实践581595604614647服务端技术篇java动态脚本执行效率对比评测一种多场景通用备份容灾方案淘宝斗地主残局玩

7、法技术方案总结9个服务端提升debug效率的IDEA Debugger技巧浅析设计模式4模板方法模式浅析设计模式5-责任链模式DDD之于业务支撑的意义策略模式在数据接收和发送场景的应用秒级启动的集成测试框架如何在业务代码中优雅地使用责任链模式慢SQL治理经验总结674682688702717727740753760778786基于扩散模型的3D智能创作引擎与内容投放算法最新实践基于组合优化的3D家居布局生成看千禧七大数学难题之NP问题电商3D购物新体验:AR量脚和AR试戴背后的算法技术前端3D技术概述基于 MNN 在个人设备上流畅运行大语言模型ARM汇编快速入门7958038118258378

8、503D/XR 技术篇在淘宝,音视频技术团队解决了内容电商什么问题?淘宝iOS拍立淘微距能力探索与实现淘宝拍立淘多码识别方案总结863876888多媒体技术篇淘宝拍照基于端云协同的视频流实时搜索实践CVPR 2023淘宝视频质量评价算法被顶会收录 CVPR 2023淘宝视频质量评价算法被顶会收录大淘宝技术斩获NTIRE 2023视频质量评价比赛冠军(内含夺冠方案)896 903911深度统一粗排在淘宝主搜索的优化实践每日好店淘宝店铺推荐系统实践每日好店店品排序探索模型升级Generator-Evaluator重排模型在淘宝流式场景的实践LLM在电商推荐系统的探索与实践CIKM论文解读|淘宝内容

9、化推荐场景下对多场景全域表征的思考与应用ICCV2023|基于动作敏感性学习的时序动作定位淘宝用户体验分析方法论VOC数据洞察在淘宝详情的应用与实践物流产品体验诊断与优化BPPISE数据科学案例框架数据驱动性能体验优化大数据基础技能入门指南92093394094895997298899410121021103010361045算法/大数据篇负责淘宝业务前端开发9年,聊聊我的心得“技术开发最应该做什么?”,聊聊我在服务端开发5年的理解和收获聊聊我在淘宝做性能分析的经历聊聊我做 NeRF-3D重建性能优化经历聊聊我在店铺开放域做性能优化的体会聊聊我在淘宝的成长公式和业务思考聊聊我从底层算法到业务算

10、法转型的这一年思考力:如何更好地做出判断105710671072107910841090109611002023大淘宝技术工程师推荐书单推荐领域新人必看书籍:推荐系统实践程序员必读|业务架构解构与实践111511221131技术人的必读书单第二部分技术人生与学习成长系列技术人的经验总结年度精选技术栈内容第一部分技术人的百宝黑皮书2023版01第一部分年度精选技术栈内容技术人的百宝黑皮书2023版201年度精选技术栈内容AIGC与大模型篇AIGC与大模型篇基于AIGC的3D场景创作引擎概述作者:Meta技术团队通过改变3D场景制作流程复杂、成本高、门槛高、流动性差的现状,让商家像玩转2D一样去玩

11、转3D,让普通消费者也能参与到3D内容创作和消费中,真正实现内容生产模式从PGC/UGC过渡到AIGC,是我们3D场景智能创作引擎一直追求的目标。前言随着元宇宙的大火,国内外各大厂纷纷下场开始为下一代互联网技术布局,旨在为用户提供更好的体验。体验包括方方面面,比如更好的游戏体验、更好的社交体验、更高效的办公体验当然也包括更好的消费体验。作为国内最大的电商平台,我们团队也在持续思考如何基于元宇宙的技术,给消费者带来更好的购物体验以及给商家带来更好的营商体验。回归到电商“人、货、场”三要素上,通过虚拟人技术以及商品三维重建技术,“人”和“货”在3D化上已经迈出了重要的一步,而“场”作为连接“人”和

12、“货”的重要载体,目前还严重依赖于专业人员通过专业的DCC软件进行创作,门槛高、耗时长、成本高、效率低,这就导致了中小商家以及C端用户在现阶段难以大规模参与,即使是头部大品牌商家制作的3D场景内容也很有限。然而大规模的虚拟世界需要有大规模的虚拟内容作为支撑进行构建,基于AIGC的能力加速“场”的自动化构建从而降低3D场景制作门槛就显得非常有必要。3D场景制作流程概述3D场景制作在游戏行业已经形成了一套非常成熟的工业化、流水线生产的解决方案。下面通过游戏行业场景制作方式来简单介绍一下3D场景制作的整体流程。游戏中一个完整的场景制作流量一般可以分成如下六个步骤:1.游戏策划提需求2.原画师承接,并

13、绘制出对应的原画3.建模师制作对应的三维模型和材质贴图技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇图片来源:https:/ 3D场景智能创作引擎技术架构,下面介绍一下创作引擎核心的几个算法。前背景生成技术前背景生成技术核心解决构建的3D场景与待展示的商品或者店铺相匹配问题。即给定一款商品生成与之匹配的3D场景对该商品进行展示或者给定一个店铺的商品生成与这批商品调性相符的店铺场景。对于不同品类的商品,所需场景复杂度是完全不一样的。以手机和沙发为例,一般展示手机的3D场景以抽象的风格为主,比如星空、天空、或者一些抽象艺术风类似于手机内置的壁纸其主要目的是配合手机的外观以及屏

14、幕壁纸颜4技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇色进行展示,整体场景相对简单,而展示沙发一般以实景场景为主并且需要在一个非常好看的客厅空间进展展示,为了营造温馨或者奢华的视觉效果还需额外大量的辅搭物品,如下图所示:为了解决不同复杂度场景生成问题,我们构建了两套场景生成技术,以下简称单场景生成技术和复杂场景生成技术,下面分别介绍这两种技术方案简单场景生成技术简单场景生成技术核心解决场景内贴图生成问题,根据不同的商品生成与之匹配的场景贴图,并用生成的贴图根据一定的场景构建方式构建出新的场景,从而完成简单3D场景创作。我们采用的技术方案是基于Diffusion Mode

15、l进行贴图生成,模型结构如下图所示:5技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇6给手机生成的星空背景贴图如下图所示:同时,我们基于手机屏幕壁纸也做了一些创意的贴图生成,效果如下图所示:直接根据手机壁纸进行场景贴图生成,构造与手机相符的3D场景。同时也可以基于该技术进行AI创意输出,设计师在搭建场景时给到设计师更多的灵感输入。另外,基于AIGC生成贴图的好处在于不受图片版权限制。复杂场景生成技术如上述沙发的例子,在构建复杂场景时仅仅考虑场景贴图是远远不够的,需要围绕该商品构建整个客厅场景,硬装上包括背景墙、地板、灯具、窗帘等等、软装上包括辅搭家具、辅搭配饰、地毯等等。

16、技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇7如上图所示,我们先后尝试过四种生成方案,均未取得理想的效果,原因如下:1.基于pair 1生成N方案:该方法直接将1-N的问题当成多个1-1的问题来处理,缺点是,搭配不存在递推关系,即A与B搭,A与C搭,不能得出结论说B与C搭,所以,一旦生成的序列过长,基本没有审美可言,基于我们提出的BLEU n-gram的评测方法效果最差;2.TransE方案:主要研究如何在更高位空间内解决递推关系,缺点是在有限规模的数据集下,不能找到一个高维空间可以对所有的家具进行表达,进而导致递推关系不成立;3.transformer方案:需要大规模

17、的数据集进行训练,由于设计域的数据集都比较小导致训练不充分,匹配关系基本都学得不够好,其向量内聚性也不够好;技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇84.GCN方案:该方法的优点是节点的度越大,表征得越充分,度越少,表征得越不充分,极端情况是度为0,表征能力就很差。很适合解类似于完形填空的N生成1问题,针对1生成N问题,初始情况下度为0,很难稳定生成比较好的场景;设计领域存在一个明显的设计特点,物理空间上越接近的物体其相关性要求越高,还是以沙发为例,比如客厅的主沙发和副沙发,往往要求其在款式、颜色、风格上要保持一致,物理空间距离越远设计上的自由度就会越大,比如客厅的

18、沙发和卧室的床或者餐厅的餐桌之间设计自由度就会很高,没有明显的限制。根据设计与物理空间远近强相关这一关系,我们对原有的transformer进行了部分改进,在复杂场景中将待生成的辅搭物品根据空间距离划分成多个组,从而将一次性生成一整个长序列分解成生成多个强相关的短序列组合,同时每个短序列又作为先验知识,用于生成下一个短序列,这样做的好处是能够保证局部空间的强相关性以及当前空间与其他空间的相容性,而且实验发现能大大降低对样本的消耗量。通过实践我们发现该方案不仅适用于单商品的场景生成,也适用于店铺维度的场景生成,整体的网络结构如下图所示:运镜技术构建纯3D场景不会涉及到运镜相关的技术,然而一旦需要

19、把3D场景转成内容进行分发,比如基于3D场景生成图片用于制作宝贝的商品主图,或者基于3D场景制作短视频在各大短视频平台进行分发,或者基于3D场景制作全景图进行3D展示,或者在虚拟世界的虚拟屏幕上进行广告投放时,智能运镜技术就显得非常有必要。智能运镜技术可以类比成一个虚拟摄影师,通过这个虚拟摄影师可以在已经生成的3D场景里拍摄出非常好看的图片、视频、全景图等优质素材供给各渠道进行分发。技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇9运镜技术最大的难点是相机参数标注难度过大,成本过高,无法开展批量化标注。相机标注要有专业的摄影师与3D设计师一起参与,每一个机位的标注都需要设计

20、师与摄影师协同配合,成本非常高,如果找非专业人士标注直接进行标注,效果非常不理想,为了解决无法进行批量化标注的问题,我们先后迭代了两个大的版本,我们称之为基于摄影构图的运镜技术和基于现有构图的逆向运镜技术,下面分别介绍这两种运镜技术。基于摄影构图的运镜技术顾名思义就是将摄影构图的技术参数化,并将其应用于3D场景的拍摄中,比如最常见的构图技巧为“井”字构图法,如下所示:将待拍摄的画面通过两条横线和两条竖线分隔成九个象限,产出四个焦点,这四个焦点称之为黄金分割点,只要把待展示的物体放到这4个焦点的上,就能产出一幅比较不错的图片,还是以沙发为例,通过运用“井”字构图法,分别将焦点置于(2,1)和(1

21、,2)处,就能拍摄出不错的图片,如下图所示:技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇10另外一种常用的构图技巧“井”字构图法的另外一种构图方法,简称“三分”构图法,将待拍摄的画面通过两条横线分隔成三个象限,并把在3D场景中待拍摄的物体放置在下面一条线上,也能拍出比较好的图片:基于摄影构图技术算法已经能够拍摄出与普通摄影师相媲美的图片或者短视频,它的缺点在于摄影构图千变万化,通过调整相机高度、相机相对物体的距离,俯仰角、FOV等参数同样的构图技巧能拍摄出非常不一样效果,而且不同品类的商品虽然构图理论是同一套,但最终呈现的效果也可以完全不一样。因此,需要根据不同的类目需

22、要去调节不同的参数,工作量巨大,该方法适用于项目冷启动阶段且急需产出素材的时候,无法大规模推广。基于现有构图的逆向运镜技术逆向指的是逆向商家的运镜,商家经过多年的摸索,已经把最优质的拍摄方法都沉淀在了商品主图中,因此,最直接的方式就是从商品主图中逆向摄影师拍摄时的相机参数。但直接从商品主图中还原摄影师拍摄时候的相机参数难度巨大,两者之间缺少直接的联系。由于物体在3D空间中的坐标是已知的,如果我们能预估出物体在图像中的3D bounding box从而得到其8个顶点的坐标,那么就可以将其转换成图形学中的Perspective-n-Point(pnp)问题,该问题可以通过Direct Linear

23、 Transformation(DLT)方法进行求解,得到相机参数,并将其迁移到3D场景中,就能实现机位生成。我们通过UniPose对商品主图进行预测得到物体的3D bounding box以及对应的8个顶点坐标,为了提高模型效果,同时加入了物体姿态估计、热图估计。训练数据则是来自于随机角度渲染出的2D图以及部分人工标注数据,模型框架如下所示:技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇11有了主物体在2D空间下的8个顶点的坐标,以及在3D空间下的对应的坐标,通过DLT算法就能求解出对应的相机参数:其中x是物体2D图像坐标,X是3D世界坐标,K是相机内参矩阵,R是相机外

24、参矩阵,Xo为相机位置坐标。迁移到3D场景中时,由于3D场景内物体在尺寸上与商品主图不一定完全一致,为了保证主物体在画面中的占比,需要进行机位微调,如下图所示是微调的过程,微调的目标就是主物体在画面中的占比技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇12有了逆向运镜技术,不仅可以直接获取商家的运镜方法,也极大降低了标注成本不再需要专业的摄影师和3D设计师协同进行标注,同时也为运镜技术进行规模化推广到所有品类奠定了技术基础。算法基于3D场景生成技术+智能运镜技术制作的效果图如下所示,同样是针对沙发场景,我们可以生成几十种运镜效果:场景素材价值预估技术有了3D场景生成技术和

25、运镜技术后机器已经可以批量化、规模化、低成本的进行场景制造,据我们统计目前沙发类目下单品展示的3D场景平均一个模型已经可以构建出超过500个场景,再加上运镜技术每个场景至少能生产5张优质图,也就意味着针对一个3D模型,我们可以生产出1500张优质图,这么多优质素材如何投放能够效率最大化,这一问题随着场景制造能力逐步提升所面临的挑战也在逐渐增大。此处我们的解法是进行素材价值优选,优选最有效的素材进行投放,比如搜索场景我们以CTR为目标优选出CTR最高的素材进行投放。技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇13我们以目前跟搜索合作在搜索侧透出机器产出的3D场景素材为例,

26、简单阐述一下场景素材价值预估与传统CTR预估的区别:1.只负责供给素材,不干预排序:在这种情况下,一个素材CTR高,并不一定能代表我们生成的素材好,需要考虑该素材透出的坑位,以及商品本身的CTR;2.传统CTR预估针对item维度对全局item进行预估,而我们是素材维度对同一个item机器产出的不同素材进行预估;3.由于我们只做离线的素材供给,因此仅有图像本身的特征以及投放后的统计类特征;4.给不同商家供给的素材、给同一个商家不同商品供给的素材,所用的3D场景需要有足够的多样性,否则在搜素展现时,同质化会非常严重;在没有大流量训练的前提下,仅仅从图像层面进行粗粒度特征提取,模型效果远不如汤普森

27、采样。为此,我们对图片的信息进行了细粒度的解构做了大量的特征工程,同时基于逆向运镜技术从图片中解构出了相机参数作为2D图片独有的3D特征,从而将商家拍摄的图片与3D场景下生成的图片在特征维度进行了统一,如下为我们抽取的部分特征:技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇14通过投放以及对日志数据的分析,我们发现了一些有趣的现象,如下图所示:我们通过大量的投放实验发现合理的前背景搭配以及合理的机位选择能对商品CTR带来显著的影响。住宅家具类目的实验表明,更合理的前背景搭配以及有效的运镜CTR差异能够超过15%。另外,基于当前的工作,我们也在探索设计的白盒化,即可以从前背

28、景搭配、运镜、主物体占比画面面积等维度出发对一张图的点击率进行分析,或者给到商家一些指导,帮助商家进一步优化主图的点击率,进而提升运营效率。模型生成技术在进行游戏创作时最缺的是美术资产,比如要搭建一个中世界风的游戏,前期需要创作大量的美术资产,如下图所示,如今游戏产业针对美术资产的创作已经形成了一个比较完善的工业化解决方案。技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇15电商行业也类似,为了对万物进行场景构建,我们同样需要丰富多样的3D美术资产。而与游戏厂商可以针对每款游戏进行重金投入花费巨额成本进行资产创作不同,我们不可能要求所有商家都进行重资产投入,特别是中小商家或

29、者C端用户。面对电商特有的多样、高频的营销场景以及海量不同的商品特质,都要求我们必须要有低成本、高质量的美术资产创作方案来适配海量场景构建需求。目前我们的解法是通过AIGC技术进行纹理创作,下图所示是基于AI进行模型生成效果:应用介绍通过上面的介绍可知,将AI构建的3D场景通过运镜技术内容化后,分别可以输出图片、视频、3D空间等相关内容,结合淘宝APP、手机天猫APP相关场景,我们分别做了一些实践。3D场景图片化图片是目前淘宝APP各渠道分发最多的素材,不管是商品详情页、搜索、首猜还是其他导购场都需要用到图片进行分发。因此图片也是商家花重金建设的最核心资产,甚至有些商家戏称自己是一家图片制作公

30、司。据我们跟一些头部家装大商家的调研,如果是实拍图,一套主图的成本就在20005000元不等。技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇16如今,3D场景的自动生成能力结合运镜技术,AI已经具备了批量化造图的能力,我们将AI制作的图片搜索以及首页猜你喜欢,在公域非付费流量替换商品主图进行透出,我们希望借助AI的能力让商家能够得到额外的收益。目前淘宝搜索、SKU搜索引擎、搜索筛选项、首页猜你喜欢的部分类目已经接入我们的能力日均曝光千万级,CTR有明显提升并且获得了头部大商家的认可。AI的持续造图能力,不仅能够给商家带来优质的图片素材,同时也可以防止用户的浏览疲劳,始终能

31、够给消费者提供更新更好的素材供其消费。通过这个项目,我们跟家装头部大商家建立了很好的合作,包括林氏木业、全友家居、芝华士、顾家、喜临门、慕思等等帮助他们持续提升在公域透出的效率,目前已经有3000+店铺授权我们使用公域自然流量。可以想象未来商家基于AI能力进行素材创作并进行分发的巨大空间,其制作效率与传统实景拍摄相比,将会有一个多么大的提升,特别是后疫情时代,AI为商家提供了另一种可替代的造图能力,甚至可以想象,未来商家只要有一个3D模型,AI就能完成商家所需素材的创作需求。3D场景视频化短视频化的时代,我们通过3D技术也为短视频的生成持续助力。在3D场景中拍摄视频与拍摄图片相似,单一视角拍摄

32、变成了序列视角拍摄。目前,我们生成的短视频已经在淘宝APP、手机天猫部分类目的商详落地,帮助商家降低视频创作的成本,提升视频创作的效率。3D空间展示3D空间展示依赖3D场景的构建,目前我们生成的3D场景以3D样板间的形式在极有家相关频道进行了透出,极大降低了商家搭建3D样板间的成本技术人的百宝黑皮书2023版01年度精选技术栈内容AIGC与大模型篇17总结与展望作为下一代互联网虽然元宇宙仍处在非常早期的阶段,我们也在持续探索元宇宙电商场景的表现形式,不过我们始终坚信低成本、高质量、低门槛、大规模的3D场景构建技术必然是未来构建元宇宙的基础设施。通过改变3D场景制作流程复杂、成本高、门槛高、流动

33、性差的现状,让商家像玩转2D一样去玩转3D,让普通消费者也能参与到3D内容创作和消费中,真正实现内容生产模式从PGC/UGC过渡到AIGC是我们3D场景智能创作引擎一直追求的目标。仰望星空的同时也要脚踏实地,未来很长一段时间手机仍然电商最重要的媒介,因此图片和视频仍然是商家重资产投入的环节以及消费者消费规模最大的内容,希望我们的3D场景智能创作引擎在目前的2D分发时代能够给更多的商家以及业务在素材上降本增效,丰富消费者个性多元的消费需求。团队介绍大淘宝技术Meta团队,目前负责面向消费场景的3D/XR基础技术建设和创新应用探索,创造以手机及XR 新设备为载体的消费购物新体验。团队在端智能、端云

34、协同、商品三维重建、3D引擎、XR引擎等方面有着深厚的技术积累,先后发布深度学习引擎MNN、端侧实时视觉算法库PixelAI、商品三维重建工具Object Drawer、端云协同系统Walle等。团队在OSDI、MLSys、CVPR、ICCV、NeurIPS、TPAMI等顶级学术会议和期刊上发表多篇论文。欢迎视觉算法、3D/XR引擎、深度学习引擎研发、终端研发、AIGC等领域的优秀人才加入,共同走进3D数字新时代。简历请投递至:chengfei.lcfalibaba-技术人的百宝黑皮书2023版01年度精选技术栈内容探索 StableDiffusion:生成高质量图片学习及应用18探索 Sta

35、bleDiffusion:生成高质量图片学习及应用作者:艾贺(致问)本文主要介绍了 StableDiffusion在图片生成上的内容,然后详细说明了StableDiffusion 的主要术语和参数,并探讨了如何使用 prompt 和高级技巧(如图像修复、训练自定义模型和图像编辑)来生成高质量的图片。介绍StableDiffusionStableDiffusion是什么Stable Diffusion是一种潜在的文本到图像扩散模型,能够生成逼真的图像,只需任何文本输入,就可以自主自由创造漂亮的图像,使众多不会拍照的人在几秒钟内创造出惊人的图片。StableDiffusion可以生成不同的图片风格

36、,比如:Anime 动画,realistic 写实,Landscape 风景,Fantasy 奇幻,Artistic 艺术。还有很多其他的风格,都可以在网上看到。StableDiffusion主要术语有一些图示来直观理解StableDiffusion,比较深奥,不过多解释:https:/ AUTOMATIC1111 GUI 合并两个模型,转到 Checkpoint Merger 选项卡,在 Primary model(A)和 Secondary model(B)中选择要合并的两个模型。2.调整乘数(M)来调整两个模型的相对权重。将其设置为 0.5 将以相等重要性合并两个模型。3.按下运行按钮后

37、,新合并的模型就可以用了。微调模型:Embedding&Lora&Hypernetwork1.CheckPoint:这些是真正稳定的扩散模型。它们包含生成图像所需的所有内容,不需要额外的文件。它们通常很大,大小为2-7 GB。本文的主题是它们。2.Embedding:也称为Textual inversions。它们是定义新关键词以生成新对象或样式的小文件。通常为10-100 KB。您必须与CheckPoint模型一起使用。3.LoRA:它们是用于修改样式的检查点模型的小补丁文件。它们通常为10-200 MB。您必须与CheckPoint模型一起使用。也是用于给先有模型做一些微小的改变;可以对原

38、有模型做补丁,然后通过关键词触发风格,人物。4.Hypernetwork:它们是添加到CheckPoint模型的附加网络模块。它们通常为5-300 MB。您必须与Check-Point模型一起使用。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版21ControlNet 控制姿势ControlNet是一种稳定的扩散模型,可以复制作品和人体姿势。想要使用的话再扩展中安装sd-webui-controlnet扩展即可。正常情况下我们想要控制人物的姿势是十分困难的,并且姿势随机,而ControlNet解决了这个问题。它强大而多功能,可以与任何扩散模型一起使用。主要作用:1.边缘检

39、测,家具摆放等2.人体姿势复制可用的模型以及说明:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版22抽样算法不同抽样算法的生成时间对比:使用不同的抽样算法生成的图片:a busy city street in a modern city01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版23Stable Diffusion 主要参数列表h t t p s:/s t a b l e-d i f f u s i o n-a r t.c o m/k n o w-t h e s e-i m p o r t a n t-p a r a m e-ters-for-st

40、unning-ai-images/#Sampling_methods01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版24如何生成高质量的图片什么是prompt?在StableDiffusion中,prompt是指为GPT模型提供输入的文本段落或句子。它是用来引导模型生成有意义、准确的响应的关键因素之一。好的Prompt结构1.Subject(required)主体2.Medium 艺术类别3.Style 艺术风格4.Artist 艺术家5.Website 艺术流派6.Resolution 清晰度7.Additional details 额外的细节8.Color 色彩同时可以

41、考虑满足以下的条件:1.在描述主题时要详细和具体。2.使用多个括号()来增强其强度,使用来降低。3.艺术家的名字是一个非常强的风格修饰符,使用的时候要知道这个是什么风格。Prompt风格参考如果不确定要用什么风格,可以去下面的两个地址搜一下对应的风格1.关键词检索(laion-aesthetic-6pls):https:/laion-aesthetic.datasette.io/laion-aesthetic-6pls/images2.艺术风格汇总list of artists for SD:https:/rentry.org/artists_sd-v1-4prompt3.查询参考:https

42、:/ 降低权重;a(word)-将对单词的权重增加1.1倍 a(word)-将对单词的权重增加1.21倍(=1.1*1.1)a word-将对单词的权重减少1.1倍 a(word:1.5)-将对单词的权重增加1.5倍 a(word:0.25)-将对单词的权重减少4倍(=1/0.25)prompt也可以从某个点位开始考虑生成指定的内容:from:to:when示例:a fantasy:cyberpunk:16 landscape1.开始时,模型将绘制一幅fantasy景观。2.在第16步之后,它将切换到绘制一幅cyberpunk:景观,继续从fantasy停止的地方绘制。另外一种语法:cow|h

43、orse in a field第1步,提示是“cow”。第2步是“horse”。第3步是“cow”,以此类推。一些参考promptnegtive提示符:ugly,tiling,poorly drawn hands,poorly drawn feet,poorly drawn face,out of frame,extra limbs,disfigured,deformed,body out of frame,bad anatomy,watermark,signature,cut off,low contrast,underexposed,overexposed,bad art,beginner

44、,amateur,distorted face01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版32(ugly),(duplicate),(morbid),(mutilated),out of frame,extra fingers,mutated hands,(poorly drawn hands),(poorly drawn face),(mutation),(deformed),(ugly),blurry,(bad anatomy),(bad proportions),(extra limbs),cloned face,(disfigured),out of frame

45、,ugly,extra limbs,(bad anatomy),gross proportions,(malformed limbs),(missing arms),(missing legs),(extra arms),(extra legs),mutated hands,(fused fingers),(too many fingers),(long neck)如何想出好的prompt:https:/stable-diffusion- img2img,也可以自己上传到img2img;3.用刷子进行绘制想要修改的区域,刷完之后,重新生成。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑

46、皮书2023版33其中的一些参数:模型记得选择SDv1.5修复模型(sd-v1-5-inpainting.ckpt)。训练自己的模型?可以直接在Colab云端训练,本地也不用配置环境,训练也很快:h t t p s:/c o l a b.r e s e a r c h.g o o g l e.c o m/g i t h u b/L i n a q r u f/k o h y a-t r a i n-er/blob/main/kohya-LoRA-dreambooth.ipynb#scrollTo=WNn0g1pnHfk5想在本地训练:1.参考:https:/ 太容易重复;2.准备把图片制作有有

47、固定尺寸,创建一个目录:_ 一次可以训练多个概念01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版343.开始训练、选择在colab上训练是最方便的方式,本地就省去了很多配置。以上要准备的内容简单说就是:图片、类型、唯一名字https:/ Driver中。然后自己在本地测试:prompt:a woman,hitokomoru,with a cat on her head negtive:(worst quality:2),(low quality:2),disfigured,ugly,old,wrong finger使用自己的Lora VS 不使用Lora还有一次可以训练多个

48、概念,把文件件组织好就行了01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版35图片编辑 pix2pix编辑配置文件configs/instruct-pix2pix.yaml,改为如下内容:1 use_ema:true /默认为false 2 load_ema:truedenoising 改为1.0,抽样使用Euler a算法;常用参数:1.text cfg:越大代表生成的内容越接近我们的文字描述2.image cfg:越大代表越接近我们的原始图片,越小代表可以越不按照原始图片生成01年度精选技术栈内容AIGC与大模型篇36技术人的百宝黑皮书2023版下面是一些常用的指令模板

49、:1.Change the Style to(an artist or style name)2.Have her/him(doing something)3.Make her/him look like(an object or person)4.Turn the(something in the photo)into a(new object)5.Add a(object)6.Add a(object)on(something in the photo)7.Replace the(object)with(another object)8.Put them in(a scene or bac

50、kground)9.Make it(a place,background or weather)10.Apply(a emotion or something on a person)有时候重新表达指令可以改善结果(例如,“turn him into a dog”与“make him a dog”与“as a dog”)。增加steps的值有时可以改善结果。人脸看起来奇怪?Stable Diffusion自编码器在图像中人脸较小的情况下会有问题。尝试:裁剪图像,使人脸在画 面中占据更大的部分。资料地址:模 型 下 载 地 址:h t t p s:/h u g g i n g f a c e.c

51、 o/t i m b r o o k s/i n s t r u c t-p i x 2 p i x/r e s o l v e/-main/instruct-pix2pix-00-22000.ckpt线上体验地址:https:/huggingface.co/spaces/timbrooks/instruct-pix2pix使用脚本Stable Diffusion的webUI中默认有一些脚本,可以方便我们尝试一些不同的生成方式。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版37下面是一些常用的指令模板:1.Change the Style to(an artist or

52、style name)2.Have her/him(doing something)3.Make her/him look like(an object or person)4.Turn the(something in the photo)into a(new object)5.Add a(object)6.Add a(object)on(something in the photo)7.Replace the(object)with(another object)8.Put them in(a scene or background)9.Make it(a place,background

53、 or weather)10.Apply(a emotion or something on a person)有时候重新表达指令可以改善结果(例如,“turn him into a dog”与“make him a dog”与“as a dog”)。增加steps的值有时可以改善结果。人脸看起来奇怪?Stable Diffusion自编码器在图像中人脸较小的情况下会有问题。尝试:裁剪图像,使人脸在画 面中占据更大的部分。资料地址:模 型 下 载 地 址:h t t p s:/h u g g i n g f a c e.c o/t i m b r o o k s/i n s t r u c t

54、-p i x 2 p i x/r e s o l v e/-main/instruct-pix2pix-00-22000.ckpt线上体验地址:https:/huggingface.co/spaces/timbrooks/instruct-pix2pix使用脚本Stable Diffusion的webUI中默认有一些脚本,可以方便我们尝试一些不同的生成方式。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版38常见生成人物问题与处理01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版39StableDiffusion生成图片演示水底美女文字生成 text2im

55、g水下摄影肖像,iu1,裙子,美丽的详细女孩,极其详细的眼睛和脸,美丽的详细眼睛,闭着嘴,黑色的头发,锁骨,裸露的肩膀,长睫毛,飘逸的头发,气泡,阳光穿过水面,逼真,照片般的真实感,由泰德格兰博拍摄,最高品质。正面提示:underwater photography portrait,iu1,dress,beautiful detailed girl,extremely detailed eyes and face,beautiful detailed eyes,closed mouth,black hair,collarbone,bare shoulders,longeyelashes,flo

56、ating hair,bubbles,sun light breaking through water surface,realistic,photorealistic,by ted grambeau,best quality反面提示:(worst quality:2),(low quality:2),(normal quality:2),goggles,sun glasses,hand,extra fingers,fewer fingers,strange fingers,bad hand01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版40我做的事情:1.下载并使用F22

57、2模型;2.参考其他水底美女提示符,修改人物生成要用的人物;3.微调提示符,多次生成;西湖风景后期处理 img2img参数CFG scale8值越大,越符合你的prompt,范围为130;默认为7.个人测试:5以下看起来不好看默认是SD模型,可以下载这个模型,F222主要用在女性身材生成上比较擅长:https:/huggingface.co/acheong08/f222/blob/main/f222.ckpt默认是SD模型,可以下载这个模型,F222主要用在女性身材生成上比较擅长:https:/huggingface.co/acheong08/f222/blob/main/f222.cktSa

58、mpling steps20Image size512512Seed-1Face restorationCodeformerSampling methodDPM+2M KarasModelF222微调模型Lora iuhttps:/ img2imgprompt:a young man holding a durian fruit in his hand,portrait,detailed eyes,hyperrealisticnegtive prompt:(worst quality:2),(low quality:2),disfigured,ugly,old模型:AnythingV3;Den

59、oising strength从0.1依次升高,第一张为原图;Denoising strength:0.40.7(可以看到从0.5的噪声强度开始,AI已经开始自由发挥了,虽然也会参考原图)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版42Denoising strength:0.80.9(基本完全自由发挥)依旧是上个原图,换为midjourney v4模型,Denoising strength测试0.2,0.4,0.6,0.8相同的提示词,换个模型之后整体风格大变;人像卡通化测试 img2imgTextCFG固定:7.5,调整ImageCFG;Put him in bea

60、ch01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版43控制人物姿势 ControlNet提示:A girl,showing her muscles,detailed face,realistic,8k negtive prompht:(worst quality:2),(low quality:2),disfigured,ugly,old,nsfw除了控制姿势,还可以控制人物的表情,这里我们只是控制人物的姿势;图片Inpaiting测试 img2img给“模特”戴项链:A girl,(necklace:1.5),showing her muscles,detailed f

61、ace,realistic,8k 01年度精选技术栈内容AIGC与大模型篇定稿去水印技术人的百宝黑皮书2023版44给“模特”戴墨镜:A girl,(sunglasses:1.5),showing her muscles,detailed face,realistic,8k StableDiffusion在实际应用中的案例个人应用1.娱乐,头像、图片加工(不同风格处理)、创作新的场景(尝试一些场景,然后告诉SD)2.快速创建艺术作品、设计产品原型商业应用1.设计工具,帮助设计师快速创建产品原型、样式和艺术作品2.营销工具,帮助企业快速创建逼真的广告海报、产品展示图、电影场景等,提高营销效果。3

62、.个性化定制,个性化定制平台中,帮助消费者快速创建个性化产品,例如定制T恤、鞋子等4.教育上,创新教育,虚拟实验,只需要有想象力就可以生成对应的图片探讨StableDiffusion与AIGC未来的发展趋势将概念扩大不仅是生成图片,而是人工智能生成内容的话,参开ChaGPT的回答,在未来人工智能技术可能的发展方向和影响;媒体行业和广告行业人工智能内容生成技术可以用于新闻、报道、评论等方面,帮助媒体机构更快速、高效地生成内容。同时,它也可以用于广告创意、广告文案等方面,帮助广告公司更好地推广产品和服务。游戏行业和教育行业人工智能内容生成技术可以用于游戏角色、游戏关卡等方面,帮助游戏公司更好地设计

63、和开发游戏。此外,它还可以用于教学资源的生成和个性化教学,例如生成教材、课件、试题等。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版金融行业和医疗行业人工智能内容生成技术可以用于金融报告、分析和预测,例如生成金融新闻报道、投资报告等。在医疗行业中,它可以用于医疗报告和病历记录,例如生成病历记录、医学报告等。法律行业和建筑行业人工智能内容生成技术可以用于法律文件和合同的生成,例如生成合同、法律文书等。在建筑行业中,它可以用于建筑设计和规划,例如生成建筑设计图纸、规划方案等。IT行业人工智能内容生成技术在IT行业中的应用非常广泛,可以将其分为以下几个子类别:内容创作人工智能内

64、容生成技术可以用于互联网内容的自动化生成,例如自动化生成新闻报道、博客文章、社交媒体内容等,从而提高效率和质量。搜索引擎人工智能内容生成技术可以用于搜索引擎的优化和改进,例如生成更好的搜索结果、提高搜索的准确性和速度等。个性化推荐人工智能内容生成技术可以用于个性化推荐系统的优化和改进,例如生成更符合用户兴趣和需求的推荐内容。聊天机器人人工智能内容生成技术可以用于聊天机器人的开发和优化,例如生成更自然、流畅的对话内容,提升用户体验。数据分析人工智能内容生成技术可以用于大数据分析和处理,例如自动生成数据报告、分析结果等软件开发人工智能内容生成技术可以用于自动生成代码、文档、测试用例等,从而提高软件

65、开发的效率和质量。安全领域人工智能内容生成技术可以用于网络安全和数据安全领域,例如自动生成安全报告、分析网络攻击等。01年度精选技术栈内容AIGC与大模型篇45技术人的百宝黑皮书2023版人机交互人工智能内容生成技术可以用于改善人机交互体验,例如自动生成UI界面、语音交互内容等。云计算人工智能内容生成技术可以用于优化云计算服务,例如自动生成云计算资源规划、监控报告等。总结这里主要介绍了 StableDiffusion在图片生成上的内容,然后详细说明了StableDiffusion 的主要术语和参数,并探讨了如何使用 prompt 和高级技巧(如图像修复、训练自定义模型和图像编辑)来生成高质量的

66、图片。最后设想了一些 StableDiffusion 在个人和商业领域的实际应用案例,讨论了它在媒体、游戏、金融、法律、IT 等行业的未来发展趋势。最后,我们正处于AIGC的时代,这些新技术正在改变我们的生活和工作方式,为我们带来前所未有的机遇和挑战。积极拥抱这些新技术,抓住时代的机遇,不断学习和适应新的变化。不管以后什么行业,AIGC 技术都将发挥越来越重要的作用。尽早探索未知的领域,开创更好的未来!相关资源1.免费的SD网站:https:/stable-diffusion- diffusion webui:https:/ of artists for SD:https:/rentry.or

67、g/artists_sd-v1-45.艺术家作品列表:https:/ T1AWgU54qXm8/htmlview6.提示语辅助生成promptoMANIA:https:/ Inversion Embeddings:https:/cyberes.github.io/stable-diffusion-textual-inversion-models/8.AIGC 掀起的商业浪潮:https:/grow.alibaba- Diffusion特性官方介绍:https:/ AI:https:/ Face:https:/huggingface.co/models团队介绍大淘宝技术用户运营平台技术团队是一支

68、最懂用户,技术驱动的年轻队伍,以用户为中心,通过技术创新提升用户全生命周期体验,持续为用户创造价值。团队以创新为核心价值观之一,鼓励团队成员在工作中不断探索、实验和创新,以推动业界技术的进步和用户体验的提升。我们不仅关注当前业界领先的技术,更注重未来技术的预研和应用。团队成员会积极参与学术研究和技术社区,不断探索新的技术方向和解决方案。团队立足体系化打造业界领先的用户增长基础设施,以媒体外投平台、ABTest平台、用户运营平台为代表的基础设施赋能阿里集团用户增长,日均处理数据量千亿规模、调用QPS千万级。在用户增长技术团队,我们提供“增长黑客”极客氛围和丰富的岗位选择,欢迎业界贤才加入。01年

69、度精选技术栈内容AIGC与大模型篇47技术人的百宝黑皮书2023版基于Stable Diffusion的AIGC服饰穿搭实践作者:羽扇本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程,并陈述了部分目前的实践结果。通过阅读这篇文章,读者可以了解到如何运用Stable Diffusion进行实际操作,并提供更优质的服饰虚拟穿搭体验。业务背景随着AI技术的不断创新,AI创作工具已经逐渐成为艺术家、设计师和创作者们的最佳助手。在AI生图领域,Stable Diffusio

70、n以其开源、生出图片质量高等众多优势脱颖而出,展现出强大的综合实力。我们希望利用Stable Diffu-sion作为工具,在虚拟服饰穿搭领域进行一些创新和探索,期待通过AI技术的应用,在线上提供更多样化、个性化的服装选择和搭配方案,为用户提供更好的服饰虚拟穿搭体验。现状调研在虚拟穿搭领域,目前主要有两类主流方法,分别是虚拟试衣VTON和基于Stable Diffusion的AIGC穿搭。虚拟试衣VTON基于图像的虚拟试衣方法的处理流程通常有两个阶段:将试穿的服装扭曲以与目标人物对齐的几何匹配模块(GMM)和将扭曲的服装与目标人物图像混合的Try-On Module(TOM)。01年度精选技术

71、栈内容AIGC与大模型篇48技术人的百宝黑皮书2023版为了训练神经网络,理想的数据集应该是:用户身穿自己衣服的照片,要试穿的衣服产品图,用户身着要试穿衣服的照片,在一般情况下获取到这样大量的理想数据集是非常难的。因此,对于VTON而言,大多数虚拟试衣模型神经网络的训练,都建立在一个上万张女模型数据集的基础上,且这上万张模特数据照片以正面视角为主,缺乏多机位多角度的拍摄。样本图片大小固定为256*192,出图的清晰度已经很难满意目前的用户需求。上述原因都限制了VTON实际应用中的效果。基于Stable Diffusion的AIGC穿搭利用Stable Diffusion的大模型生图能力,辅以L

72、oRA、ControlNet、Inpainting等“外挂”手段,增强穿搭出图的可控性与稳定性。LoRALoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,是一种参数高效性微调方法。LoRA的基本原理是在冻结预训练好的模型权重参数情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型微调类似的效果。01年度精选技术栈内容AIGC与大模型篇49技术人的百宝黑皮书2023版在https:/ Diffusion图生图中

73、的一种特殊模式,用户可以通过上传Mask图,使Stable Diffusion根据其余信息(例如Prompt、LoRA、ControlNet)保留Mask内部的全部细节,重绘其余所有部分。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版52可以通过Mask Mode选择重绘Masked部分或者除Masked外的剩余部分。Segment AnythingISegment Anything如其名分割一切,是一个由Meta开源的图像分割模型,号称图像分割领域的GPT 4.0。网页demo如下:https:/segment- Diffusion的Web UI中,我们也可以通过下载安

74、装Segment Anything插件来实现相同的功能。分割方式非常友好,可以通过左键、右键简单地点击来选择或者提出对应物体,物体就会立即被分割出来,可以绘制成Mask图,直接发送至上节的Inpainting模式中使用。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版53处理流程本地部署Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion,我们在本地部署了Stable Diffusion Web UI,本地机器显卡配

75、置为RTX3060 12GB。Stable Diffusion Web UI为保持代码整洁和便于管理,逐步将非核心功能解耦并转为插件和拓展脚本形式提供,我们可以根据需要从对应的GitHub仓库中下载插件,并放到Web UI 路径下的extensions文件夹下,启动时Web UI会从中自动加载插件。Stable Diffusion Web UI 地址:https:/ Diffusion图生图中自带的CLIP和DeepBooru插件效果更好。输入样本图片所在的文件夹信息,并在下方填写Additional/Exclude tags选项,即可预设或者屏蔽某些Tag标签的产出。Tagger 地址:ht

76、tps:/ Tag Editor插件,对tag进行编辑。目前插件的tag反推精准度依然有限,时常需要人工介入剔除掉一些不相干或者完全错误的Tag词,以保证训练LoRA模型的精准性和还原性。Dataset Tag Editor 地址:https:/ 12GB的机器配置下,完成对示例11张样本图片50批次训练的时间成本在30分钟左右。训练完成后,单个LoRA模型的大小在37MB左右。01年度精选技术栈内容AIGC与大模型篇55技术人的百宝黑皮书2023版ControlNet在以人物为主的生成图中,最常采用的是openpose系列的预处理器,openpose来对人物全身的骨骼姿态进行检测,使得输出图

77、和上传输入图保留一致的人体骨骼形体,增强输入人物的姿态可控。可以在ControlNet插件中预览人体的骨骼姿态,也可以通过调节Control Weight权重参数来控制骨骼姿态对最终出图结果的影响。成果展示单件试衣针对于不同类型的服饰采集了训练样本,进行了LoRA的训练,服饰类型包括衬衫、外套、裤子、鞋子等,查看了单一LoRA与模特、虚拟人结合出图的效果。结果发现普通上衣下衣类别的服饰准确率比较高,可以基本还原服饰的颜色、纹理等特征,上身效果也不错。01年度精选技术栈内容AIGC与大模型篇T恤外套夹克输入输出输入输出输入输出技术人的百宝黑皮书2023版5601年度精选技术栈内容AIGC与大模型

78、篇衬衫长裙鞋输入输出输入输出输入输出技术人的百宝黑皮书2023版5701年度精选技术栈内容AIGC与大模型篇季节试衣在对单一服饰的LoRA训练出图后,我们又对于不同季节的服饰套装进行了风格训练,选取了春秋季、夏季、冬季三个季节的服饰穿搭套装进行了LoRA训练。从产出的图片效果来看,服饰套装的上身效率很不错,搭配比较合理,与季节的关联度比较高。春秋季技术人的百宝黑皮书2023版5801年度精选技术栈内容AIGC与大模型篇夏季技术人的百宝黑皮书2023版5901年度精选技术栈内容AIGC与大模型篇总结我们基于在本地环境搭建的Stable Diffusion,对服饰进行了LoRA小模型微调,学习到服

79、饰自身的特征信息,利用ControlNet插件提升了出图的可靠性与稳定性,初步完成了AIGC的服饰穿搭DEMO实践。从单件服饰的生成穿搭来看,普通类的上下衣主服饰还原度比较高。季节类的套装和人物模特合图效果尚可,上身效果也比较不错。冬季技术人的百宝黑皮书2023版6001年度精选技术栈内容AIGC与大模型篇参考文献1.CP-VTON+:Clothing Shape and Texture Preserving Image-Based Virtual Try-On(地址:https:/mi-nar09.github.io/cpvtonplus/cvprw20_cpvtonplus.pdf)2.S

80、egment Anything(地址:https:/segment- Diffusion(I):怎么组成(地址:https:/ Diffusion 常用术语(地址:https:/ Intelligence in Graphics and Computing)技术的出现,为3D模型的生成提供了全新的思路和方法。AIGC技术可以利用人工智能和计算机图形学的结合,实现更加高效、准确和灵活的3D模型生成。技术模型NeRF 神经辐射场2020年,谷歌提出神经辐射场3D建模方法NeRF,可以渲染出较高质量的图片,不需要人工修模,3D建模成本较低,为大规模3D模型生产带来了新思路。起初淘宝Meta 团队主要

81、致力于 提升 NeRF重建效果(布料细节清晰度、商品文字清晰度等提升),使其渲染清晰度达到工业落地标准。神经辐射场(NeRF)是一个简单的全连接网络(权重约为5MB),经过训练,可以使用渲染损失再现单个场景的输入视图。网络直接从空间位置和观看方向(5D输入)映射到颜色和不透明度(4D输出),充当“体积”,因此我们可以使用体积渲染来渲染新视图。神经辐射场是一种面向三维隐式空间建模的深度学习模型,这种深度学习模型又称全连接神经网络(又称多层感知机)。NeRF 所要做的任务是 Novel View Synthesis,一般翻译为新视角合成任务,定义是:在已知视角下对场景进行一系列的捕获(包括拍摄到的

82、图像,以及每张图像对应的内外参),不需要中间三维重建的过程,仅根据位姿内参和图像,合成新视角下的图像。在基于Nerf的表示方法下,三维空间被表示为一组可学习且连续的辐射场,由输入视角+位置学习后,得到密度+色彩。技术人的百宝黑皮书2023版6201年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版63Point-E尽管基于Rerf的相关生成模型在text-to-3D的相关任务下取得了较大的进展,但是大部分的的方法通常需要多个GPU小时才能生成一个样本。这与最先进的生成图像模型形成了鲜明的对比,后者可以在几秒钟或几分钟内生成样本。2022年OpenAI又提出 Point-E的一种独

83、特的3D点云生成方法,该方法可以在单个GPU上仅用1-2分钟生成3D模型。Point-E首先使用文本到图像扩散模型生成单个合成视图,然后使用一个扩散模型在生成的图像的条件下产生3D点云。虽然Point-E在样本质量方面仍然不如最先进的方法,但它在样本生成速度上比最先进的方法快1到2个数量级。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版64Code地址:https:/ 2D 生成模型(如 Imagen)生成多个视角的 3D视图,然后用NeRF重建。这里面有个“鸡生蛋蛋生鸡”的问题:如果没有一个训练得比较好的NeRF,Imagen 吐出的图会视角之间没有consistenc

84、y;而没有 consistent 的多视角图,又得不到一个好的 NeRF。于是作者想了个类似 GAN 的方法,NeRF 和 Imagen 来回迭代。好处是多样性比较强,问题也比较明显,因为需要两边来回迭代 15,000 次,生成一个模型就需要在 4 块 TPUv4 上训练 1.5 小时。DreamFusion:3D NeRF 和 2D 生成模型来回迭代优化https:/ 12GCPU:Intel I9-13900KF内存:64GBShap-E我们在本地通过cuda部署了Shap-E模型,使用Jupyter Notebook 来进行代码测试,经测试生成一个3d模型的平均时长为5分钟,但是生成的模

85、型细节、质量等都较差。git:https:/ Prompt:A shark01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版68 Prompt:“A beautiful girl in a long dress”01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版69AvatarCLIP我们基于顶会论文在本地部署了AvatarCLIP,AvatarCLIP是一个基于Zero-shot的文本驱动的三维数字人模型与动作生成器。训练一个精模至少需要10h以上的时间,生成的模型包含基础的人体骨骼,可以通过mixamo平台绑定骨骼获取不错的动画效果,但是近看面部、手部等

86、处细节比较差。项目地址:https:/hongfz16.github.io/proj-ects/AvatarCLIP.htmlPrompt:a 3d rendering of a XX in unreal engine业界的应用场景文本生成平面贴图1.barium.ai(地址:https:/ UV 空间生成贴图(“AI 画贴图”)1.Meshy.ai(地址:https:/www.meshy.ai/)2.Polyhive.ai(地址:https:/polyhive.ai/)文本直接生成 3D 模型目前还没有真正公测的产品aigc生成3D模型目前存在的一些问题1.数据质量问题:由于采集数据的不准确

87、或缺失,可能导致3D模型中存在缺陷、错位或其他问题。2.计算机性能问题:在生成复杂的3D模型时,需要大量的计算和存储资源,计算机性能不足可能导致生成效果差。3.纹理映射问题:生成的3D模型需要进行纹理映射,但是在现实世界中很难找到完美匹配的纹理图像,这可能导致纹理不自然或者出现缝隙等问题。4.模型解释问题:生成的3D模型需要能够被人理解和识别,但是可能存在歧义或者难以解释的地方,导致使用者无法充分利用模型。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版70参考资料 1.https:/ NeRF(下):关于 3D AIGC 的务实探讨(地址:https:/ NeRF(上):

88、不写 CUDA 也能开发、部署 Instant NGP4.详解神经渲染算法NeRF及其发展(地址:https:/ Transformers 扩展到更长的序列长度一直是过去几年的一个热点问题,这将有助于提高语言建模和高分辨率图像理解的能力,也有利于音频和视频生成方面的新应用场景研发。Attention层是扩展到更长序列的主要瓶颈,因为它的运行时间和内存占用是序列长度的二次方。使用近似计算的Attention方法,可以通过减少FLOP计算次数、甚至于牺牲模型质量来降低计算复杂性,但通常无法实现大比例的加速。由斯坦福大学提出的FlashAttention方法,让使用更长sequence计算Atten

89、tion成为可能,并且通过线性级别的增长来节省内存以及加速计算。因为FlashAttention没有进行近似计算,所以也没有精度损失。然而,FlashAtten-tion的实际速度仍然和理论上的运算速度差距较大,仅达到理论最大 FLOPs/s 的 25-40%。效率低下的原因主要是不同线程块和warp之间的工作分区不理想,导致低占用率或不必要的共享内存读/写。为此,2023年7月,论文作者进一步提出了FlashAttention-2,实现了Attention计算速度的大幅度提升。FlashAttention主要内容FlashAttention主要关注IO-aware,进一步优化GPU显存的读写

90、效率。这是一种 IO 感知的精确Attention算法,它使用tiling(这里可以理解为分块)来减少 GPU 高带宽内存(HBM)和 GPU 片上 SRAM 之间的内存读/写次数。这里的HBM可以理解为显存,SRAM可以理解为cache。通过测试IO复杂性,相比标准 Attention,FlashAtten-tion需要更少的 HBM 访问,并且对于不同的SRAM 大小来说都是有效的。除此以外,FlashAttention还可以扩展到block-sparse attention,产生比任何现有近似注意力方法更快的近似注意力算法。FlashAttention与 MLPerf 1.1 训练速度相

91、比,对于BERT-large(序列长度 512)实现端到端wall-clock加速15%,对于GPT-2(序列长度 1K)加速 3 倍。FlashAttention 和block-sparse FlashAttention 可在 Trans-formers 中实现更长的上下文,从而产生更高质量的模型,GPT-2 上的困惑度提升0.7,长文档分类的test结果提高 6.4 个点。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版72主要操作 背景知识:上图的左图,表示存储结构,可以简单理解为:SRAM表示缓存,HBM表示显存,DRAM表示内存。tiling在不访问整个输入的情况

92、下优化attention计算,并减少相关计算量。重构attention计算,将输入分割成块,并对分块进行多次传递,从而逐步执行attention计算(该步骤称为tiling)。如上图所示,FlashAttention 使用tiling来防止在相对较慢的 GPU显存上实现大型?注意力矩阵(虚线框)计算。在外部循环(红色箭头)中,FlashAttention 循环遍历 K 和 V 矩阵块,并将它们加载到快速片上 SRAM。在每个块中,FlashAttention 循环遍历 Q 矩阵块(蓝色箭头),将它们加载到 SRAM,并将注意力计算的输出写回 HBM。将输入Q、K、V矩阵分成很多块,将它们从较慢

93、的HBM加载到较快的SRAM,然后在SRAM计算关于这些块的注意力输出。对每个块的计算结果缩放之后进行add操作,则得到正确的结果,具体伪代码如图:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版73recomputingFlashAttention不专门存储用于后向计算的大型中间计算结果。在SRAM中存储前向计算中的 softmax 归一化因子,以便在后向传递计算梯度的时候快速得到中间结果,这比从 HBM 读取中间计算结果的标准方法更快。FlashAttention不存储前向计算中?(?2)复杂度的中间值,但是后向传递通常需要矩阵 S,P R?来计算相对于 Q、K、V 的

94、梯度。通过存储输出 O 和 softmax 归一化统计量(?,),则可以在 SRAM 中的 Q、K、V 块的后向计算中快速重新计算注意力矩阵 S 和 P。这可以看作是checkpoint的一种形式。如下图所示,FlashAttention由于tiling分块操作和recomputing操作,增加了一些计算次数。但是还是通过使用SRAM减少了显存占用,通过减少hbm访问次数加快了attention计算。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版74Block-Sparse FlashAttention论文还提出了Block-sparse FlashAttention,其

95、IO复杂度比FlashAttention小,与稀疏度成正比。非0矩阵越少(即0矩阵越多),稀疏化来压缩数据的空间就越大,block-sparse加速就越明显。上图中,IO复杂度与稀疏性成正比,随着稀疏性的增加(非0矩阵增加),Block-sparse FlashAttention的运行时间成比例地提高。小结总的来说,FlashAttention有如下优点:1.hbm访问次数降低,所以计算更快2.在sram中计算attention,并对于后向计算提前保留中间结果,所以显存占用更少3.可以使用更长的sequence,使得模型训练效果更好4.对于attention计算,加速明显。如果加上稀疏化处理,

96、速度会更快。FlashAttention-2主要内容FlashAttention 的整体速度仍然和单独进行矩阵乘法(GEMM)的运算速度差距较大,仅达到理论最大 FLOPs/s 的 25-40%。作者观察到效率低下的原因是不同线程块和warp之间的工作分区不理想,导致低占用率或不必要的共享内存读/写。最新提出 FlashAttention-2,通过更好的工作分区来解决这些问题,主要包含的操作:1.调整算法以减少非矩阵乘运算的计算次数。2.跨不同线程块进行并行化注意力计算。3.在每个线程块内,在 warp 之间优化工作分配以减少共享内存的通信。与FlashAttention 相比,FlashAt

97、tention-2速度提高了约 2 倍,达到 A100 上理论最大 FLOPs/s 的 50-73%,01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版75接近 GEMM 操作的效率。根据经验验证,当使用端到端来训练 GPT 式模型时,FlashAttention-2 的训练速度高达每 A100 GPU 225 TFLOPs/s(模型 FLOPs 利用率为 72%)。不同设置(有或没有causal mask、不同头部尺寸)的测试表明,FlashAttention-2 比 FlashAttention 实现了约 2 倍的加速,在前向传递中达到理论最大吞吐量的 73%,在后向传递

98、中达到理论最大吞吐量的 63%。主要操作减少非矩阵运算调整算法以减少非 matmul(矩阵乘法)FLOP 的数量,同时不改变输出。虽然非 matmul FLOP 只占总 FLOP 的一小部分,但它们由于 GPU 具有专门的矩阵乘法单元,非矩阵乘法的运算需要更长的时间来执行,矩阵乘法吞吐量可以比非矩阵乘法吞吐量高出16倍。因此,减少非 matmul FLOP 并尽可能多的进行 matmul FLOP 非常重要。Forward pass:优化qkv的softmax计算中非矩阵运算背景知识:吞吐量是指单位时间内完成的任务数量或数据处理量。在这个上下文中,吞吐量指的是执行矩阵乘法操作时的性能表现,以及

99、执行其他非矩阵乘法操作时的性能表现。这句话的意思是,执行矩阵乘法操作时,系统能够以每单位时间处理更多的任务或数据,其数量可以高达非矩阵乘法操作时的16倍。这表明矩阵乘法操作在性能上比其他操作更加高效。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版76Backward pass:FlashAttention-2的后向传递与FlashAttention几乎相同,主要区别在于需要进行梯度计算与更新。这里做了一个小调整,只使用求和结果,而不是 softmax 中的行式最大值和行式指数和。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版77增加并行比例除了bat

100、chsize维度和head数目维度,还在序列长度维度上对前向传播和反向传播进行并行化处理,提高并行性。在序列较长的情况下,提高GPU资源的占用率。FlashAttention对于batchsize和head数目进行并行化处理,FlashAttention2基于序列长度进行并行化。当批量大小和head数量较小时,序列长度上增加的并行性有助于提高占用率(正在使用的 GPU 资源的比例),从而在这种情况下实现加速。Forward pass:对批量维度和头数维度进行并行化,如 FlashAttention 中所做的那样。对于外循环(在序列长度上),将它们调度到不需要彼此通信的不同线程块上,每个工作线程

101、负责关注矩阵的一行block块。外循环每次处理一行block,内循环每次处理这一行中的一列block,这和FlashAttention处理方式是不同的。Backward pass:不同列块之间唯一共享的计算是算法 2 中更新的dQ,其中我们需要将 dQ从 HBM 加载到 SRAM,然后在片上通过 dQ更新,并写回 HBM。我们使用原子添加在不同线程块之间进行通信以更新 dQ。我们也在序列长度维度上进行并行化,并为后向传递的每一列block块安排 1 个工作线程(和前向传递是反过来的)。在warp上优化工作划分在一个注意力计算的block内,在一个thread block的不同warp之间优化工

102、作划分,以减少通信和共享内存的读/写。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版78在每个线程块内,我们也必须决定如何在不同的 warp 之间划分工作。我们通常每个线程块使用 4 或 8 个 warp,分区如上图所示。Forward pass:对于每个块,FlashAttention 将 K 和 V 分割到 4 个 warp 上,同时保持 Q 可被所有 warp 访问。每个warp相乘得到 QK?的slice,然后它们需要与 V 的slice相乘并进行通信以将结果相加。这称为“split-K”方案。然而,这是低效的,因为所有 warp 都需要将其中间结果写入共享内存,

103、进行同步,然后将中间结果相加。这些共享内存读/写会减慢 FlashAttention 中的前向传播速度。在 FlashAttention-2 中,我们将 Q 分成 4 个经线,同时保持所有经线均可访问 K 和 V。在每个扭曲执行矩阵乘法以获得 QK?切片后,它们只需与共享的 V 切片相乘即可获得相应的输出切片。warp 之间不需要通信。共享内存读/写的减少可以提高速度。Backward pass:对于后向传递,我们选择对warp进行分区以避免“split-K”方案,从而减少共享内存的读/写次数,并再次提高速度。由于所有不同输入和梯度 Q、K、V、O、dO、dQ、dK、dV 之间的依赖性更加复杂

104、,它需要一些同步操作。小结FlashAttention-2可以加速attention计算。测量FlashAttention-2 在不同序列长度上的运行时间,并与 PyTorch、FlashAttention 和 Triton 中的 FlashAttention 中的标准实现进行比较。FlashAttention-2 比 FlashAttention 快 1.7-3.0 倍,比 Triton 中的 FlashAttention 快 1.3-2.5 倍,比标准注意力实现快 3-10 倍。背景知识:warp:由多个thread组成,是编程层面的概念。flash1:k和v被分为4个不同的warp,q和

105、k计算、再和v计算,每一次计算的中间结果都要写入共享内存,并在之后被读取。这样就增加了共享内存的读写次数、拖慢了速度。flash2:将q分为4个不同的warp,然后计算qk、计算v。但是这里k和v不需要通信,所以计算v的时候,不需要新的内存读写。这样就减少了读写次数、加快了程序。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版79FlashAttention-2可以加速端到端训练。当使用端到端在 2k 或 8k 序列长度上训练大小为 1.3B 和 2.7B 的 GPT 型模型时,FlashAttention-2 与 FlashAttention 相比可实现高达 1.3 倍的

106、加速,与基线相比可实现 2.8 倍的加速 没有FlashAttention。每个 A100 GPU 的 FlashAttention-2 速度高达 225 TFLOPs/s(模型 FLOPs 利用率为 72%)。FlashAttention-2 比 FlashAttention 快 2 倍,可以用之前训练 8k 上下文模型的时间,来训练具有 16k 更长上下文的模型。使用更长的context训练模型,可以更好理解长篇书籍和报告、高分辨率图像、音频和视频。FlashAttention-2加速实践时间与显存的优化效果对于qkv计算,比较FlashAttention2与custom pytorch、

107、xformers(FlashAttention1)的时间与显存消耗。如果只考虑QKV计算,flash attention2耗时是xformers(flash attention1)的一半,内存节省也更多一些。flash attention2耗时是xformers(flash attention1)的一半,内存节省也更多一些test 0 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000754,peak memory:113 MBflash attention time:0.000103,sp

108、eedup:7.29;peak memory:45 MB,save:60%xformers time:0.000255,speedup:2.95;peak memory:63 MB,save:44%test 1 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000703,peak memory:131 MBflash attention time:0.000106,speedup:6.63;peak memory:57 MB,save:56%xformers time:0.000252,spe

109、edup:2.80;peak memory:70 MB,save:46%test 2 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000721,peak memory:131 MBflash attention time:0.000106,speedup:6.78;peak memory:57 MB,save:56%xformers time:0.000263,speedup:2.74;peak memory:70 MB,save:46%test 3 shape:(9,351,16,64),

110、dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000704,peak memory:131 MB123456789101112131415161718192001年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版80flash attention time:0.000105,speedup:6.71;peak memory:57 MB,save:56%xformers time:0.000249,speedup:2.82;peak memory:70 MB,save:46%test 4 shape:(9,351,16,

111、64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000700,peak memory:131 MBflash attention time:0.000110,speedup:6.35;peak memory:57 MB,save:56%xformers time:0.000254,speedup:2.75;peak memory:70 MB,save:46%test 5 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.00076

112、6,peak memory:131 MBflash attention time:0.000106,speedup:7.25;peak memory:57 MB,save:56%xformers time:0.000252,speedup:3.04;peak memory:70 MB,save:46%test 6 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000684,peak memory:131 MBflash attention time:0.000101,speedup:6.77;

113、peak memory:57 MB,save:56%xformers time:0.000268,speedup:2.56;peak memory:70 MB,save:46%test 7 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000717,peak memory:131 MBflash attention time:0.000110,speedup:6.52;peak memory:57 MB,save:56%xformers time:0.000254,speedup:2.82;p

114、eak memory:70 MB,save:46%test 8 shape:(9,351,16,64),dtype:torch.bfloat16,causal:Truecustom pytorch time:0.000700,peak memory:131 MBflash attention time:0.000100,speedup:6.98;peak memory:57 MB,save:56%xformers time:0.000253,speedup:2.77;peak memory:70 ,save:46%test 8 shape:(9,351,16,64),dtype:torch.b

115、float16,causal:Truecustom pytorch time:0.000700,peak memory:131 MBflash attention time:0.000100,speedup:6.98;peak memory:57 MB,save:56%xformers time:0.000253,speedup:2.77;peak memory:70 MB,save:46%test 9 shape:(9,351,16,64),dtype:torch.bfloat16,causal:True21222324252627282930313233343536373839404142

116、43444546474849505152535401年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版81fcustom pytorch time:0.000721,peak memory:131 MBflash attention time:0.000102,speedup:7.10;peak memory:57 MB,save:56%xformers time:0.000251,speedup:2.87;peak memory:70 MB,save:46%555657精度损失比较计算FlashAttention2对于注意力机制的精度损失,与pytorch的计算精度进行对比。绝

117、大部分用例都可以通过测试,并且符合要求:dQ Pytorch mean diff:0.000698089599609375dK Pytorch mean diff:0.0005950927734375dV Pytorch mean diff:0.000537872314453125.Actual dropout fraction:0.17163611948490143Output max diff:0.001953125Output mean diff:2.9206275939941406e-05Pytorch max diff:0.0029296875Pytorch mean diff:8.

118、106231689453125e-05Attention max diff:0.000244140625Attention Pytorch max diff:0.000732421875dQ max diff:0.0025577545166015625dK max diff:0.00390625dV max diff:0.0078125dQ mean diff:3.904104232788086e-05dK mean diff:0.0001360177993774414dV mean diff:0.0001475811004638672dQ Pytorch max diff:0.0039062

119、5dK Pytorch max diff:0.004150390625dV Pytorch max diff:0.0078125dQ Pytorch mean diff:8.702278137207031e-05dK Pytorch mean diff:0.00025916099548339844dV Pytorch mean diff:0.0002474784851074219.Actual dropout fraction:0.17163611948490143Output max diff:0.015625Output mean diff:0.0002346038818359375123

120、4567891011121314151617181920212223242501年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版82Pytorch max diff:0.015625Pytorch mean diff:0.00064849853515625Attention max diff:0.001953125Attention Pytorch max diff:0.00390625dQ max diff:0.01953125dK max diff:0.033203125dV max diff:0.0625dQ mean diff:0.0003108978271484375

121、dK mean diff:0.00109100341796875dV mean diff:0.0011749267578125dQ Pytorch max diff:0.01806640625dK Pytorch max diff:0.0390625dV Pytorch max diff:0.0625dQ Pytorch mean diff:0.00069427490234375dK Pytorch mean diff:0.0020751953125dV Pytorch mean diff:0.001953125.2627282930313233343536373839404142少数用例不符

122、合要求,有一定的精度损失:FAILED tests/test_flash_attn.py:test_flash_attn_race_condition0.0-128-128-False-dtype0-assert FalseFAILED tests/test_flash_attn.py:test_flash_attn_race_condition0.0-128-128-True-dtype0-assert FalseFAILED tests/test_flash_attn.py:test_flash_attn_bwd_transpose128-128-False-dtype0-Assertio

123、nError:assert 236.75=(2*0.0009765625)FAILED tests/test_flash_attn.py:test_flash_attn_bwd_transpose128-128-False-dtype1-AssertionError:assert 22144.0=(2*0.0078125)FAILED tests/test_flash_attn.py:test_flash_attn_bwd_transpose128-128-True-dtype0-AssertionError:assert 2.724609375=(2*0.001953125)FAILED t

124、ests/test_flash_attn.py:test_flash_attn_bwd_transpose128-128-True-dtype1-AssertionError:assert 95.5 flash attention2 flash attention1加速效果xformers(flash1):文生图(512*512)文生图(512*512)(batchsize=4)unet耗时(s)unet耗时(it/s)(step=20)111117.06it/s18.22it/s17.36it/s16.43it/s6.26it/s6.27it/s6.25it/s6.25it/s3333文生图

125、加速(一次生成1图)文生图加速(一次生成4图)unet过程提速(17.26-11.23)/11.23=54%(6.26-4.33)/4.33=45%文生图(512*512)_ouput1文生图(512*512)_ouput2技术人的百宝黑皮书2023版8701年度精选技术栈内容AIGC与大模型篇AIGC加速分析生图过程主要有两部分耗时:controlnet与unet旧方法:xformers 0.0.20,使用flash attention1加速sd(unet+controlnet)新方法:1.当前的fastunet只加速unet里的attention(换为flash attention2)。2

126、.xformers0.0.21加速包括controlnet在内的所有attention(换为flash attention2)。3.fastunett还对其他算子也做了一些fuse操作,也起到了加速效果。fastunet和xformers0.0.21加速的底层逻辑,都是使用flash attention2优化attention。fastunet和xformers0.0.21叠加使用,可以最大程度起到加速效果。新的加速方法主要针对attention计算进行优化,所以在unet及其attention部分会有更高比例的加速。总结与讨论近年来,让 Transformers 能够处理更长的序列长度一直备

127、受关注。这一发展有助于提升语言建模和高分辨率图像理解的能力,并为音频和视频生成等新的应用场景带来了机遇。FlashAttention方法使得使用更长的序列计算注意力成为可能,并通过线性级别的增长来节省内存并加速计算。这一方法为处理长序列的Transformer模型提供了一种有效的解决方案。最新提出的FlashAttention-2,也进一步实现了attention计算速度的大幅度提升。当我们一直在关注GPU显存大小以及计算能力的时候,FlashAttention关注了GPU显存以外的SRAM,从而优化attention计算。也为我们解决问题提供了思考,即在主流关注的技术点以外,还有一些被忽视的

128、但依旧可以解决问题的思路。面对实际效果与理论效果的差距,FlashAttention-2则进一步找到gap原因,通过关注矩阵运算、序列并行、工作分区等问题,优化计算效果。这也提醒我们,对于性能问题的解决,从软硬件结合的角度出发,才能更充分的解决问题。在AIGC领域的生图任务中,使用diffusion model进行相关计算,需要大量时间完成生图过程。所以,通过FlashAttention-2等多种加速方法进一步提升AIGC的生图效率,具有深刻意义。我们团队致力于家装行业AIGC进行相关研发,以提高家装AI模型的效果。我们希望与对此方向感兴趣的同学一起探讨和交流。团队介绍我们是淘天集团-场景智能

129、技术团队,一支专注于通过AI和3D技术驱动商业创新的技术团队,依托大淘宝丰富的业务形态和海量的用户、数据,致力于为消费者提供创新的场景化导购体验,为商家提供高效的场景化内容创作工具,为淘宝打造围绕家的场景的第一消费入口。我们不断探索并实践新的技术,通过持续的技术创新和突破,创新用户导购体验,提升商家内容生产力,让用户享受更好的消费体验,让商家更高效、低成本地经营。技术人的百宝黑皮书2023版8801年度精选技术栈内容AIGC与大模型篇AIGC技术在淘淘秀场景的探索与实践作者:致问本文介绍了AIGC相关领域的爆发式增长,并探讨了淘宝秀秀(AI买家秀)的设计思路和技术方案。文章涵盖了图像生成、仿真

130、形象生成和换背景方案,以及模型流程串联等关键技术。文章还介绍了淘淘秀的使用流程和遇到的问题及处理方法。最后,文章展望了未来AIGC的发展趋势,包括模型使用体验优化、自动化素材生成和产品形态探索等方向。引言AIGC相关领域爆发式增长,在图像式AI领域出现Midjourney、SD等专业的工具,也推出了妙鸭相机、美图秀秀等生成虚拟形象的APP。当前淘宝具有的用户群和商家,可以考虑设计一款结合用户和商家AI工具,以AI生成用户商品代言为主题,帮助商家提高商品展示的吸引力,同时通过个性化和创新的虚拟形象增强用户体验。在这个背景下,产品同学设计了一款让用户具有代入感的生成产品,淘淘秀(也叫AI买家秀),

131、让用户上传通过照片建立像我但比我好看的商品代言,也会结合一些互动玩法,引发用户创作兴趣提升业务的指标。关键词:图像类AI创新应用、用户轻松创作、内容分享、结合商家品牌。技术调研整个产品会更复杂一些,这里我们主要探讨AIGC相关的一些技术能力,在买家秀的产品设计下,在AIGC的相关能力依赖上,有如下的诉求:1.生成优质素材模板,用户要代言的商品素材,以便达到更好的效果;生成2.结合素材模板和用户图片,生成用户相关图片;用户形象生成3.在用户图片的基础上,考虑进行背景风格替换,提升丰富性(策划中,还未上线,也写一下);背景生成替换相关的产品链路,这个是比较早期的,在调研之图中的一些方案有做一些调整

132、,但是大致流程接近:1.生成素材 -配置模板-生成用户代言图-进行贴图 ;2.同时在考虑一些视频类的生成。技术人的百宝黑皮书2023版8901年度精选技术栈内容AIGC与大模型篇图像生成方案对比要求是(真人+场景+商品类目)的情况下,生成一些比较好的素材图片案例,给到用户使用,中间使用了几个模型。现在从事后总结的角度,我觉得对这些模型做一些对比,考虑几个维度:1.准确性(易用性):模型生成的图像与提示词描述的一致性2.可扩展性;API接入与自动化:模型是否支持API接入,支持API的话,跑任务解放运营。影响到速度与效率。3.成功率:大约多少张图片,可以有一张可以用的照片,成功率到一个可以接受的

133、范围。使用提示词如下:An ultra-realistic photograph captured with the aesthetics of an iPhone camera,portraying a modern Chinese woman in a distinctive location in Shanghai.The woman is sitting on a wooden bench,the back-drop is softly blurred showcasing the citys unique architecture.The park is filled with lu

134、sh greenery and vibrant flowers,exuding tranquility.Soft sunlight bathes the womans visage and hair,creating a subtle and natural glow.The image,shot in high resolution with a 750:1200 aspect ratio,exudes the characters authentic charm and elegance.不同模型的效果:模型:Midjourney特性:易用性高;无可扩展性;成功率高达50%;优点:生成质量

135、高,真人效果好,可以生成复杂的图像。缺点:访问限制;没有API,不能直接和系统打通。;速率限制,单个用户一分钟一般只能生成一次。技术人的百宝黑皮书2023版90有时候脸会变形01年度精选技术栈内容AIGC与大模型篇基本不太有,就是风格问题、角度问题等。模型:通义万相特性:易用性高;可扩展性高;成功率中等为1050%;优点:内部产品;支持API接入;使用起来方便缺点:真人场景下效果略微差一点,但是不是不能接受;算下来更贵一点,单张照片官网标记价格 0.16元一张。个用户一分钟一般只能生成一次。效果图:BadCase:效果图:BadCase:技术人的百宝黑皮书2023版9101年度精选技术栈内容A

136、IGC与大模型篇技术人的百宝黑皮书2023版92模型:Stable Diffusion特性:易用性低;可扩展性高;成功率低约为1%;优点:开源;允许定制模型和自己部署;经过调整后效果也可以达到非常好的地步。缺点:使用难度大;提示词难调,好的效果需要花较多的时间;只能生成某一种类型的,一旦结合类目或者场景就会有比较大的问题。模型:DALLE特性:DALLE3真人效果当前不太行,暂时忽略。DALLE2还原度有点差。优点:支持API接入;能生成高分辨率的图像;提示词的还原度比较高缺点:访问限制;在真人的效果上还是差点意思。效果图:BadCase:效果图:01年度精选技术栈内容AIGC与大模型篇技术人

137、的百宝黑皮书2023版93BadCase:在我们的场景下,在真实人物上上感觉都是bad case。模型:堆友特性:风格、尺寸、生成速度,和上面没有太明显的优势。优点:内部产品;效果还可以,有一定的还原度缺点:没有联系对应团队,官网上没有API;在结合具体类目的时候,也会变形;风格有限;尺寸有限整体结论:Midjourney在生成效果上表现最为出色,但其过程需要持续的人工参与,意味着较高的时间成本。在万相和Stable Diffusion效果对比,万相效果更好,如果要做规模化考虑使用下万相;SD在通用场景下效果比较差,但是SD模型提供了全面的定制能力。基于各自的特色,概括如下:效果图:01年度精

138、选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版94基于各自的特色,概括如下:仿真形象生成方案对比如何让生成的图片要包含对应的人物特征,让用户的代入感更强。我们的算法同学调研不同的方案,数字分身以及换脸。大概效果如下:01年度精选技术栈内容AIGC与大模型篇考虑到资源问题、以及背后的素材质量问题,走换脸的链路,用的也是主流的Roop模型。换背景方案(测试中)当前可用的就只有SD的Inpaiting方案,把人物扣出来,使用SemanticGuidedHumanMatting,然后进行背景的补充。因为背后的风格是生成的,提示词未必能涵盖到所有的场景,对输入的图片也要有一定的限制。结果上存

139、在一定的不可控性,目前效果上还在探索,看以什么样的形态更合适。一些限制:1.人不能占空间太小;背景发挥的空间不要太大。2.人手里不要拿东西,人物不要有一些物品依赖,比如沙发,坐着之类的,也会生成比较奇怪的内容。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版95模型流程串联可以看一下万相在一些场景上从生成到最终的效果希望场景:行李箱-男-机场调整提示词:An Instagram-style portrait that serves as a luggage advertisement featuring a 20-year-old Chinese boy.Hes sitti

140、ng inside an airport with a suitcase next to him,holding a cup of coffee.The back-ground is the airport,creating a high-end atmosphere.You can see the boys complete face and facial features.Hes posing dynamically and relaxed,creating a sophisticated composition,shot using a film camera,8k用通义万相随机生成四张

141、照片。(提示词好的话,生成的成功率感觉还可以,效果大家可以评估下到底如何)技术人的百宝黑皮书2023版9601年度精选技术栈内容AIGC与大模型篇淘淘秀AIGC的使用1.在淘宝客户端搜索【淘淘秀】2.点击【淘淘秀】进入到对应的小程序。3.开始我的代言,上传自己的照片4.生成用户的代言照片;5.可以选择自己喜欢的代言照片发布到广场,也可以选择私密。技术人的百宝黑皮书2023版9701年度精选技术栈内容AIGC与大模型篇问题与处理在应用AIGC时遇到的一些问题与处理;问题1:模型在特定场景下生成效果不佳方案:引入外部的Midjourney,人工生产与导入。一些内部模型可以生成的,选择内部模型批量生

142、成组合多个模型使用。问题2:线上生成效果不稳定,资源消耗大。方案:离线生成,人工筛选。预先生成内容以减少资源消耗,并提高内容质量的一致性。问题3:每部署一个模型,都要写一套TPP;方案:利用vipserver进行模型匹配和调用,写一套模型调用的网关,结合限流和队列技术,平衡系统负载,提高部署效率。最开始以为只有TPP才能访问到模型部署的机器,后面发现知道IP之后,应用也可以直接调用模型的服务,就省去TPP这一层了。问题4:生成的内容后如何使用。方案:开发一些内容的配套工具,内容的导出,内容的检索(图片检索),内容标注,以满足不同场景需求。搜索【淘淘秀】进入【淘淘秀】开始代言,传照片生成代言选择

143、代言技术人的百宝黑皮书2023版9801年度精选技术栈内容AIGC与大模型篇展望在第一阶段,大约一个月的时间主要关注于开发和上线,未来还有一些可尝试的计划和想法:1.优化模型使用体验:后台体验和用户体验,当前只是确保具备对应的功能,但如何让管理人员介入进来更好的指导模型生产素材,还有很多体验优化可以做。另外再用户侧的模型生成上,保证效果更好和更稳定。2.自动化素材生成:看能否设定内容目标后,能利用模型自动化地生成内容,提升内容的规模和丰富性。3.产品形态探索:从图片到视频,从图片到故事,或者配上音乐等等,有些形态看看是否要尝试,探索更有趣、更吸引人的产品形态。跳出产品之外,一些预感即将会发生的

144、,随着模型的性能以及效果变好之后,以后对专业的内容创作者依赖越来少,内容的生产效率越来越高。互联网上将会有越来越多的AI内容,针对每个人的个性化素材,解放人们的想象力.当然内容过度也会有一定的影响,但最后肯定还是往好的方向发展。考虑到越来越多的AI创新产品出现,本文所涉及到的AIGC能力我们在这次的开发中都沉淀到一个AI的平台,提供一些模型能力的复用,对类似能力有兴趣的业务,可以探讨交流下,一起探索下更多AI的可能性。团队介绍大淘宝技术用户运营平台技术团队,是一支以用户为中心,技术驱动,正在积极探索AI的年轻队伍。我们坚持通过技术创新,提升用户全生命周期体验,持续为用户创造价值。以创新为核心价

145、值观之一,我们鼓励团队成员在工作中不断探索、实验和创新,以推动业界技术的进步和用户体验的提升。我们不仅关注当前业界领先的技术,更注重未来技术的预研和应用,尤其是AI的探索和实践。团队成员积极参与学术研究和技术社区,不断探索新的技术方向和解决方案。我们立足体系化,打造业界领先的用户增长基础设施,以媒体外投平台、ABTest平台、用户运营平台为代表的基础设施赋能阿里集团用户增长,日均处理数据量千亿规模、调用QPS千万级。在用户增长技术团队,我们提供“增长黑客”极客氛围和丰富的岗位选择。如果你对AI技术有强烈的兴趣,喜欢探索、实验和创新,欢迎加入我们的队伍,一同推动AI在业界的应用和发展。简历投递邮

146、箱:aihe.ahalibaba-技术人的百宝黑皮书2023版9901年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版100AIGC图像生成的原理综述与落地畅想作者:朱翔(晗灵)AIGC,这个当前的现象级词语。本文尝试从文生图的发展、对其当前主流的 Stable Diffusion 做一个综述。以下为实验按要求生成的不同场景、风格控制下的生成作品。概述技术演进一:昙花初现 GAN 家族01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版101GAN 系列算法开启了图片生成的新起点。GAN的主要灵感来源于博弈论中零和博弈的思想,通过生成网络G(Generator)

147、和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布。1.G是一个生成式的网络,它接收一个随机的噪声z(随机数),通过这个噪声生成图像。2.D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片。训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量辨别出G生成的假图像和真实的图像。这样,G和D构成了一个动态的“博弈过程”,最终的平衡点即纳什均衡点。技术演进二:小试牛刀 Auto-Regressive自回归模型模型利用其强大的注意力机制已成

148、为序列相关建模的范例,受GPT模型在自然语言建模中的成功启发,图像GPT(iGPT)通过将展平图像序列视为离散标记,采用Transformer进行自回归图像生成。生成图像的合理性表明,Transformer模型能够模拟像素和高级属性(纹理、语义和比例)之间的空间关系。Transformer整体主要分为Encoder和Decoder两大部分,利用多头自注意力机制进行编码和解码。在图像生成上主要有2种策略:1.VQ-VAE 进行结合,首先将文本部分转换成token,利用的是已经比较成熟的SentencePiece模型;然后将图像部分通过一个离散化的AE(Auto-Encoder)转换为token,

149、将文本token和图像token拼接到一起,之后输入到GPT模型中学习生成图像。2.CLIP 结合。首先对于一幅没有文本标签的图像,使用 CLIP 的图像编码器,在语言-视觉联合嵌入空间中提取图像的 embedding。接着,将图像转换为 VQGAN 码本空间(codebook space)中的一系列离散标记。最后,再训练一个自回归 Transformer,用它来将图像标记从 Transformer 的语言-视觉统一表示中映射出对应图像。经过这样的训练后,面对一串文本描述,Transformer 就可以根据从 CLIP 的文本编码器中提取的文本嵌入生成对应的图像标记了。01年度精选技术栈内容A

150、IGC与大模型篇技术人的百宝黑皮书2023版102图像和文本通过各自编码器转化成序列,拼接到一起送入到 Transformer(这里用的是 GPT3)进行自回归序列生成。在推理阶段,使用预训练好的 CLIP 计算文本与生成图像的相似度,进行排序后得到最终生成图像的输出。技术演进三:大放异彩 CLIP+Diffusion Model沟通桥梁:CLIP 模型利用text信息监督视觉任务自训练,本质就是将分类任务化成了图文匹配任务,效果可与全监督方法相当;CLIP 模型作为“图片-文本”预训练的底座模型,起到连接图像-文字的作用。作为后续文生图重要部分之一而持续发挥作用。01年度精选技术栈内容AIG

151、C与大模型篇技术人的百宝黑皮书2023版103Diffusion Model扩散模型(Diffusion Model)是一种图像生成技术,扩散模型分为两阶段:1.加噪:沿着扩散的马尔可夫链过程,逐渐向图像中添加随机噪声;2.去噪:学习逆扩散过程恢复图像。常见变体有去噪扩散概率模型(DDPM)等。通过带条件引导的扩散模型学习文本特征到图像特征的映射,并对图像特征进行解码得到最终图像。DALLE-2 使用 CLIP 对文本进行编码,并使用扩散模型学习一个先验(prior)过程,得到文本特征到图像特征的一个映射;最后学习一个反转 CLIP 的过程,将图像特征解码成最终的图像。文生图主角:Stable

152、 Diffusion01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版104网络结构Stable Diffusion 是一个复杂的系统而非单一模型,总体上看可以分为以下三个部分:ClipText:用于文本编码 promot。1.输入:文本 promot2.输出:77 个 token embeddings 向量,每个向量 768 维UNet+scheduler:在潜空间中逐步处理信息。1.输入:文本 embeddings 和一个初始化的多维数组组成的噪声2.输出:经过处理的信息数组自动编码解码器(Autoencoder Decoder):使用经过处理的信息数组绘制最终图像。1.

153、输入:经过处理的信息数组(4,64,64)2.输出:生成的图像(3,512,512)核心:潜空间的引入,替换了原先直接在像素空间的去噪过程。开源模型开源的 SD 模型是一个通用的基础模型,在此基础上,微调训练了各种各样的垂类模型:1.偏动漫二次元类型:novelai、naifu ai2.国风类型:https:/ Face 上开源的200+模型:https:/huggingface.co/sd-dreambooth-library4.C 站模型大全:https:/ 公式与设计Prompt格式优化:简易换行三段式表达:1.第一段:画质tag,画风tag2.第二段:画面主体,主体强调,主体细节概括。

154、(主体可以是人、事、物、景)画面核心内容。第二段一般提供01年度精选技术栈内容AIGC与大模型篇人数,人物主要特征,主要动作(一般置于人物之前),物体主要特征,主景或景色框架等3.第三段:画面场景细节,或人物细节,embedding tag。画面细节内容元素同典调整版语法:质量词前置画风前置镜头效果前置光照效果(带描述的人或物AND人或物的次要描述AND镜头效果和光照)*系数全局光照效果全局镜头效果画风滤镜(embedding)Example:A beautiful painting(画作种类)of a singular lighthouse,shining its light across

155、a tumultuous sea of blood(画面描述)by greg rutkowski and thomas kinkade(画家/画风),Trending on artstation(参考平台),yellow color scheme(配色)其中关键字说明:1.画作种类:ink painting(水墨画),oil painting(油画),comic(漫画),illustration(插画),realistic painting(写实风)等等。2.参考平台:Trending on artstation,也可以替换为FacebookPixivPixabay等等。3.画家/画风:成图更

156、接近哪位画家的风格,此处可以输入不止一位画家。比如Van Gogh:3andMonet:2,即作品三分像梵高,两分像莫奈。4.配色:yellow color scheme 指整个画面的主色调为黄色。可用工具1.https:/ Diffusion、DreamStudio等)的关键词(Prompts)文本描述模板。3.https:/ prompt 生成器5.搜索引擎6.https:/openart.ai/?continueFlag=df21d925f55fe34ea8eda12c78f1877d7.https:/www.krea.ai/8.https:/lexica.art/应用01年度精选技术栈

157、内容AIGC与大模型篇技术人的百宝黑皮书2023版105阶段一:盲盒时代在当前阶段,借助于 CLIP+Diffusion 的底座大规模预训练的成果,在风格、主题、艺术家、光线、物体等 400 维度的学习之后,根据提示信息已经可以绘画出相当具有意境的画作。根据提示词、随机种子、采样器的不同,往往会随机出现多幅作品:此时良品率大概在 15%左右,是不是有种开盲盒的感觉呢?txt2img以未加训练的 SD-2-1-base 为基础模型,随机输入文字制作几张图片,仅作示例。advanced anime character art render,beautiful anime girl wearing

158、a whale skin hoodie outfit,blue watery eyes,close up,Rossdraws,WLOP,Sakimimichan群山环绕的城堡,赛伯朋克风格技术人的百宝黑皮书2023版10601年度精选技术栈内容AIGC与大模型篇难点1.对于用户的文本输入,优质的出图效果需要一定的专家经验2.对于 C 端用户,如何将这种专家经验去门槛化3.prompt 特征工程的建立4.计算效率和资源占用5.768*768,1024*1024 的出图计算资源需求依旧庞大img2img以未加训练的 SD-2-1-base 为基础模型,随机几张图片加指定风格,做风格迁移,创作补充等

159、等可能应用1.风格迁移2.草图作画阶段二:造卡时代相比于开盲盒时代,我们有了新的追求1.我想要自由控制整体的绘画风格2.我想要生成一些在训练数据中未曾出现的概念于是,产生了一批微调大模型的方案,这里选取当前比较流行的 Textual Inversion 和 DreamBooth 做个介绍。Textual Inversion文生图模型为通过自然语言指导创作提供了前所未有的自由。然而,目前尚不清楚如何运用这种自由来生成特定独特概念的图像,修改其外观,或将其合成新角色和新场景。换言之,要把现实中的一些新概念(new concept)引入到生成中,单从文本出发还是不够的。Textual Inversi

160、on 提出了 personalized text-to-image generation,即个性化的文转图生成。可以基于文本+用户给的3-5张图(“new concepts”)来生成新的图像,把图片概念转换成pseudo-words(伪单词),然后一起合并到prompt中,从而生成一些具备这样概念的图片。技术人的百宝黑皮书2023版10701年度精选技术栈内容AIGC与大模型篇基本原理在大多数文生图模型的文本编码阶段,第一步是将prompt 转换为数字表示,而这通常是通过将words转换为tokens来完成的,每个token相当于模型字典中的一个条目(entry)。然后将这些entries转换

161、为embeddings进行训练。添加用户提供的special token(S*,表示新概念)来作为新的embedding。然后,将这个embedding 链接到新的伪单词,伪单词可以同其它词一样被合并到新的句子中。在某种意义上,我们正在对冻结模型的文本嵌入空间进行反转,所以我们称这个过程为Textual Inversion。模型结构如下图所示:1.是基于latent diffusion做的,只改进了其中text encoder部分的词表部分,添加S*来表达新概念,其它token的embedding不变,从而实现与新概念的组合。2.为了训练S*对应的文本编码v*,使用prompt“A photo

162、 of S*”生成新的图片,我们希望这个概念生成图片和用户给的图片相符合,从而学习到v*这个新概念。学到之后就可以利用S*来做新的生成了。3.损失函数:让通过这个句子prompt产生的图片和用户给的small sample(35张图)越近越好图片来源原论文技术人的百宝黑皮书2023版10801年度精选技术栈内容AIGC与大模型篇DreamBooth基本原理1.使用包含特殊字符和 class 的 prompt(例子:a identifier class noun。其中 identifier 表示稀有字符,模型没有该字符的先验知识,否则该字符容易在模型先验和新注入概念产生混淆;class noun

163、是对 subject 粗力度类的描述,通过将稀有字符和class绑定,模型可以将class的先验和identifier绑定。对低分辨率的text-to-image模型微调,其中在少数数据上对模型微调容易产生“overfitting and language drift”问题,为此提出了class-specific prior preservation loss。使用prompt(A class noun)在模型fine-tune之前产生的输出结果与当前模型在prompt(a identifier class noun)输出的结果做正则,从而保证 class 类的先验。2.其次对super-re

164、solution模型微调,主要为了产生高保真度的图片简单实践人物学习选取几张家里的小狗作为训练目标,测试 dreambooth 对未曾见过的新真实人物的刻画。图片来源原论文技术人的百宝黑皮书2023版10901年度精选技术栈内容AIGC与大模型篇我们来看看生成的效果,训练的关键词我们使用的是 tmicDUODUO dog左:a photo of tmicDUODUO dog右:a photo of tmicDUODUO dog,riding a bicycle技术人的百宝黑皮书2023版11001年度精选技术栈内容AIGC与大模型篇画风学习当然,更多的画风学习,多目标的 LoRA 融合,都可以

165、自行尝试,炼丹都这么有艺术量了么?!技术人的百宝黑皮书2023版11101年度精选技术栈内容AIGC与大模型篇阶段三:你的时代ControlNet随着欲望的膨胀,对于画不出合格的手、可以控制对象而不能控制其姿态,我们来到了第三个阶段,期望去训练一个更加听话的生成器。于是,ControlNet 走入了人们的视线。基本原理ControlNet的原理,本质上是给预训练扩散模型增加一个额外的输入,控制它生成的细节。这里可以是各种类型的输入,作者给出来的有8种,包括:1.草图2.边缘图像3.语义分割图像4.人体关键点特征5.霍夫变换检测直线6.深度图7.人体骨骼等。具体来说,ControlNet先复制一

166、遍扩散模型的权重,得到一个“可训练副本”。相比之下,原扩散模型经过几十亿张图片文本对的预训练,因此参数是被“锁定”的。而这个“可训练副本”只需要在特定任务的小数据集上训练,就能学会条件控制。技术人的百宝黑皮书2023版11201年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版113实现效果这里我们直接拿博主“海辛Hyacinth”的分享做一个展示。推理加速oneFlow深度学习算法原型开发阶段需要快速修改和调试,动态图执行(Eager mode)最优。但在部署阶段,模型已经固定,计算效率更为重要,静态图执行(Lazy mode,define and run)可以借助编译器做静态

167、优化来获得更好的性能。因此,推理阶段主要使用静态图模式。最近,PyTorch 升级到2.0引入了 compile()这个API,可以把一个模型或一个Module从动态图执行变成静态图执行。OneFlow里也有一个类似的机制,不过接口名是 nn.Graph(),它可以把传入Module转成静态图执行模式。1.OneFlowStableDiffusionPipeline.from_pretrained 能够直接使用 PyTorch 权重。2.OneFlow 本身的 API 也是和 PyTorch 对齐的,因此 import oneflow as torch 之后,torch.autocast、to

168、rch.-float16 等表达式完全不需要修改。上述特性使得 OneFlow 兼容了 PyTorch 的生态,这不仅在 OneFlow 对 Stable Diffusion 的迁移中发挥了作用,也大大加速了 OneFlow 用户迁移其它许多模型,比如在和 torchvision 对标的 flowvision 中,许多模型只需通过在 torchvision 模型文件中加入 import oneflow as torch 即可得到。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版114体验将 HuggingFace 中的 PyTorch Stable Diffusion 模型

169、改为 OneFlow 模型,1.import oneflow as torch2.from diffusers import OneFlowStableDiffusionPipeline as StableDiffusionPipeline概述1.输入验证:利用集团 KFC 能力,对“涉黄涉暴等”进行屏蔽。2.利用提供的 safety_checker 检验,NSFW 图片进行置黑处理。可能用到的工具1.BLIP:输入图片,生成对图片的描述,用于制作训练模型的数据集工具2.https:/ Tags,用于制作训练模型的数据集工具4.https:/ it/s16 it/s3 it/sspeedone

170、flow21 it/s24.5 it/s9 it/s01年度精选技术栈内容AIGC与大模型篇风格迁移01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版115 一键试妆艺术创作技术人的百宝黑皮书2023版11601年度精选技术栈内容AIGC与大模型篇指定风格的场景制作视频制作1.场景制作2.人物建模3.剧本设计4.语音合成5.动画渲染垂类领域-家装设计技术人的百宝黑皮书2023版11701年度精选技术栈内容AIGC与大模型篇参考文献1.https:/ image is worth one word:Personalizing text-to-image generation u

171、sing textual inversion.10.Dreambooth:Fine tuning text-to-image diffusion models for subject-driven generation.11.Adding Conditional Control to Text-to-Image Diffusion Models团队介绍我们是大淘宝技术行业与商家技术前端团队,主要服务的业务包括电商运营工作台,商家千牛平台,服务市场以及淘系的垂直行业。团队致力于通过技术创新建设阿里运营、商家商业操作系统,打通新品的全周期运营,促进行业垂直化运营能力的升级。技术人的百宝黑皮书202

172、3版11801年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版119从零开始的stable diffusion作者:特巴stable diffusion真的是横空出世,开启了AIGC的元年。不知你是否有和我一样的困惑,这AI工具好像并不是那么听话?前言我们该如何才能用好stable diffusion这个工具呢?AI究竟在stable diffusion中承担了什么样的角色?如何能尽可能快、成本低地得到我们期望的结果?源于这一系列的疑问,我开始了漫长的论文解读。High-Resolution Image Synthesis with Latent Diffusion Model

173、s(地址:https:/arxiv.org/abs/2112.10752?spm=ata.21736010.0.0.7d0b28addsl7xQ&file=2110.10752)当然这论文看的云里雾里的,加篇读了How does Stable Diffusion work?(地址:https:/stable-diffusion- diffusion的努力基本是为了2个目的:1.低成本、高效验证。设计了Latent Space2.Conditioning Mechanisms。条件控制,如果不能输出我们想要的图片,那这就像Monkey Coding。耗费无限的时间与资源。这是整个内容里最重要最核

174、心的两个部分。图片生成的几种方式随着深度神经网络的发展,生成模型已经有了巨大的发展,主流的有以下几种:1.自回归模型(AutoRegressive model):按照像素点生成图像,导致计算成本高。实验效果还不错2.变分自编码器(Variational Autoencoder):Image to Latent,Latent to Image,VAE存在生成图像模糊或者细节问题3.基于流的方法(Glow)4生成对抗网络(Generative adversarial network):利用生成器(G)与判别器(D)进行博弈,不断让生成的图像与真实的图像在分布上越来越接近。01年度精选技术栈内容AI

175、GC与大模型篇技术人的百宝黑皮书2023版120其中AR与GAN的生成都是在pixel space进行模型训练与推理。模型是如何生成图片的?以一只猫作为案例。当我们想画一只猫的时候,也都是从一个白板开始,框架、细节不断完善。对于AI来说,一个纯是noise的image就是一个理想的白板,类似下图展示的这样。从图中的流程,我们可以看到推理的过程如下:1.生成一个随机的noise image图片。这个noise取决于Random这个参数。相同的Random生成的noise image是2.相同的。3.使用noise predictor预测这个图里加了多少noise,生成一个predicted no

176、ise。4.使用原始的noise减去predicted noise。5.不断循环2、3,直到我们的执行steps。最终我们会得到一只猫。在这个过程中,我们会以下疑问:1.如何得到一个noise predictor?2.怎么控制我们最终能得到一只猫?而不是一只狗或者其他的东西?在回答这些疑问之前,我先贴一部分公式:我们定义一个noise predictor:图片,图片是第 t 个step过程中的noise image,t 表示第t个stop。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版121如何得到一个noise predictor?这是一个训练的过程。过程如下图所示:1

177、.选择一张训练用的图片,比如说一张猫2.生成一个随机的noise图片3.将noise图叠加到训练用的图片上,得到一张有一些noise的图片。(这里可以叠加1T步noise4.训练noise predictor,告诉我们加了多少noise。通过正确的noise答案来调整模型权重。最终我们能得到一个相对准确的noise-predictor。这是一个U-Net model。在stable-diffusion-model中。通过这一步,我们最终能得到一个noise encoder与noise decoder。PS:noise encoder在image2image中会应用到。以上noise与noise

178、-predictor的过程均在pixel space,那么就会存在巨大的性能问题。比如说一张1024x1024x3的RBG图片对应3,145,728个数字,需要极大的计算资源。在这里stable diffusion定义了一个Latent Space,来解决这个问题。Latent Space01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版122 Latent Space的提出基于一个理论:Manifold_hypothesis它假设现实世界中,许多高维数据集实际上位于该高维空间内的低维Latent manifolds。像Pixel Space,就存在很多的难以感知的高频细节,

179、而这些都是在Latent Space中需要压缩掉的信息。那么基于这个假设,我们先定义一个在RGB域的图片然后存在一个方法z=varepsilon(x),z是x在latent space的一种表达。这里有一个因子f=H/h=W/w,通常我们定义 ,比如说stable-diffusion v1.5训练与推理图片在512x512x3,然后Latent Space的中间表达则是4x64x64,那么我们会有一个decoder D能将图片从Latent Space中解码出来。在这个过程中我们期望 ,这俩图片无限接近。整个过程如下图所示:而执行这个过程的就是我们的Variational Autoencode

180、r,也就是VAE。那么VAE该怎么训练呢?我们需要一个衡量生成图像与训练图像之间的一个距离指标。也就是 。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版123细节就不关心了,但这个指标可以用来衡量VAE模型的还原程度。训练过程与noise encoder和noise-predictor非常接近。贴一个stable diffusion在FID指标上,与其他方法的对比。下面的表格来自于无条件图片生成。基本就是比较Latent Space是否有丢失重要信息。为什么Latent Space是可行的?你可能在想,为什么VAE可以把一张图片压缩到更小的latent space,并且可

181、以不丢失信息。其实和人对图片的理解是一样的,自然的、优秀的图片都不是随机的,他们有高度的规则,比如说脸上会有眼睛、鼻子。一只狗会有4条腿和一个规则的形状。图像的高维性是人为的,而自然的图像可以很容易地压缩为更小的空间中而不丢失任何信息。可能说我们修改了一张图片的很多难以感知的细节,比如说隐藏水印,微小的亮度、对比度的修改,但修改后还是同样的图像吗?我们只能说它表达的东西还是一样的。并没有丢失任何信息。结合Latent Space与noise predictor的图像生成过程01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版124生成一个随机的latent space matr

182、ix,也可以叫做latent representation。一种中间表达1.noise-predictor预测这个latent representation的noise.并生成一个latent space noise2.latent representation减去latent space noise3.重复23,直到step结束4.通过VAE的decoder将latent representation生成最终的图片5.直到目前为止,都还没有条件控制的部分。按这个过程,我们最终只会得到一个随机的图片。条件控制非常关键,没有条件控制,我们最终只能不断地进行Monkey Coding,得到源源不断

183、的随机图片。相信你在上面的图片生成的过程中,已经感知到一个问题了,如果只是从一堆noise中去掉noise,那最后得到的为什么是有信息的图片,而不是一堆noise呢?noise-predictor在训练的时候,其实就是基于已经成像的图片去预测noise,那么它预测的noise基本都来自于有图像信息的训练数据。在这个denoise的过程中,noise会被附加上各种各样的图像信息。怎么控制noise-predictor去选择哪些训练数据去预测noise,就是条件控制的核心要素。这里我们以tex2img为案例讨论。Text Conditioning下面的流程图,展示了一个prompt如何处理,并提供

184、给noise predictor。01年度精选技术栈内容AIGC与大模型篇Tokenizer从图中可以看到,我们的每一个word,都会被tokenized。stable diffusion v1.5使用的openai ViT-L/14 Clip模型来进行这个过程。tokenized将自然语言转成计算机可理解的数字(NLP),它只能将words转成token。比如说dreambeach会被CLIP模型拆分成dream和beach。一个word,并不意味着一个token。同时dream与beach也不等同于dream和beach,stable diffusion model目前被限制只能使用75个

185、tokens来进行prompt,并不等同于75个word。Embedding同样,这也是使用的openai ViT-L/14 Clip model.Embedding是一个768长度的向量。每一个token都会被转成一个768长度的向量,如上案例,我们最后会得到一个4x768的矩阵。为什么我们需要embedding呢?比如说我们输入了man,但这是不是同时可以意味着gentleman、guy、sportsman、boy。他们可能说在向量空间中,与man的距离由近而远。而你不一定非要一个完全准确无误的man。通过embedding的向量,我们可以决定究竟取多近的信息来生成图片。对应stable

186、diffusion的参数就是(Classifier-Free Guidance scale)CFG。相当于用一个scale去放大距离,因此scale越大,对应的能获取的信息越少,就会越遵循prompt。而scale越小,则越容易获取到关联小,甚至无关的信息。如何去控制embedding?我们经常会遇到stable diffusion无法准确绘制出我们想要的内容。那么这里我们发现了第一种条件控制的方式:textual inversion将我们想要的token用一个全新的别名定义,这个别名对应一个准确的token。那么就能准确无误地使用对应的embedding生成图片。这里的embedding可以

187、是新的对象,也可以是其他已存在的对象。比如说我们用一个玩具猫训练到CLIP模型中,并定义其Tokenizer对应的word,同时微调stable diffusion的模型。而 对应toy cat就能产生如下的效果。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版125感觉有点像Lora的思路,具体还得调研下lora。text transformer在得到embedding之后,通过text transformer输入给noise-predictortransformer可以控制多种条件,如class labels、image、depth map等。Cross-attenti

188、on具体cross-attention是什么我也不是很清楚。但这里有一个案例可以说明:比如说我们使用prompt A man with blue eyes。虽然这里是两个token,但stable diffusion会把这两个单词一起成对。这样就能保证生成一个蓝色眼睛的男人。而不是一个蓝色袜子或者其他蓝色信息的男人。(cross-attention between the prompt and the image)LoRA models modify the cross-attention module to change styles。后面在研究Lora,这里把原话摘到这。感觉更像是存在bl

189、ue、eyes,然后有一个集合同时满足blue和eye。去取这个交叉的集合。问题:对应的embed-ding是不是不一样的?该如何区分blue planet in eye和blue eye in planet的区别?感觉这应该是NLP的领域了。总结下tex2img的过程1.stable diffusion生成一个随机的latent space matrix。这个由Random决定,如果Random不变,则这个latent space matrix不变。2.通过noise-predictor,将noisy image与text prompt作为入参,预测predicted noise in la

190、tent space3.latent noise减去predicted noise。将其作为新的latent noise4.不断重复23执行step次。比如说step=205.最终,通过VAE的decoder将latent representation生成最终的图片技术人的百宝黑皮书2023版12601年度精选技术栈内容AIGC与大模型篇这个时候就可以贴Stable diffusion论文中的一张图了手撕一下公式:左上角的 定义为一张RGB像素空间的图。经过 的变化,生成 这个latent space representation。再经过一系列的noise encoder,得到 ,T表示ste

191、p。而这个过程则是img2img的input。如果是img2img,那么初始的noise latent representation就是这个不断加noise之后的 。如果是tex2img,初始的noise latent representation则是直接random出来的。再从右下角的 开始,y 表示多样的控制条件的入参,如text prompts。通过 (domain specfic encoder)将 y 转为intermediate representation(一种中间表达)。而 与 将经过cross-attention layer的实现:具体的细节说实话没看懂,而这一部分在cont

192、rolnet中也有解释,打算从controlnet的部分进行理解。图中cross-attention的部分可以很清晰的看到是一个由大到小,又由小到大的过程,在controlnet的图中有解释:技术人的百宝黑皮书2023版12701年度精选技术栈内容AIGC与大模型篇SD Encoder Block_1(64x64)-SD Encoder Block_2(32x32)-SD Encoder Block_3(16x16)-SD Encoder(Block_4 8x8)-SD Middle(Block 8x8)-SD Decoder(Block_4 8x8)-SD Decoder Block_3(1

193、6x16)-SD Decoder Block_2(32x32)-SD Decoder Blocker_1(64x64)是一个从64x64-8x8-64x64的过程,具体为啥,得等我撕完controlnet的论文。回到过程图中,我们可以看到denoising step则是在Latent Space的左下角进行了一个循环,这里与上面的流程一直。最终通过VAE的decoder D,输出图片最终的公式如下:结合上面的图看,基本还是比较清晰的,不过这个:=和 代表了啥就不是很清楚了。结合python代码看流程更清晰删掉了部分代码,只留下了关键的调用。pipe=StableDiffusionPipelin

194、e.from_pretrained(CompVis/stable-diffusion-v1-4,torch_dtype=torch.float16)vae=AutoencoderKL.from_pretrained(CompVis/stable-diffusion-v1-4,subfolder=vae)tokenizer=CLIPTokenizer.from_pretrained(openai/clip-vit-large-patch14)text_encoder=CLIPTextModel.from_pretrained(openai/clip-vit-large-patch14)unet=

195、UNet2DConditionModel.from_pretrained(CompVis/stable-diffusion-v1-4,subfolder=unet)scheduler=LMSDiscreteScheduler.from_pretrained(CompVis/stable-diffusion-v1-4,subfolder=scheduler)prompt=a photograph of an astronaut riding a horsegenerator=torch.manual_seed(32)text_input=tokenizer(prompt,padding=max_

196、length,max_length=tokenizer.model_max_length,truncation=True,return_tensors=pt,1234567891011121314151617181920技术人的百宝黑皮书2023版12801年度精选技术栈内容AIGC与大模型篇)with torch.no_grad():text_embeddings=text_encoder(text_input.input_ids.to(torch_device)0max_length=text_input.input_ids.shape-1uncond_input=tokenizer(*b

197、atch_size,padding=max_length,max_length=max_length,return_tensors=pt)with torch.no_grad():uncond_embeddings=text_encoder(uncond_input.input_ids.to(torch_device)0text_embeddings=torch.cat(uncond_embeddings,text_embeddings)latents=torch.randn(batch_size,unet.in_channels,height/8,width/8),generator=gen

198、erator)scheduler.set_timesteps(num_inference_steps)latents=latents*scheduler.init_noise_sigmafor t in tqdm(scheduler.timesteps):latent_model_input=torch.cat(latents*2)latent_model_input=scheduler.scale_model_input(latent_model_input,t)with torch.no_grad():noise_pred=unet(latent_model_input,t,encoder

199、_hidden_states=text_embeddings ).sample noise_pred_uncond,noise_pred_text=noise_pred.chunk(2)noise_pred=noise_pred_uncond+guidance_scale*(noise_pred_text-noise_pred_uncond )latents=scheduler.step(noise_pred,t,latents).prev_samplelatents=1/0.18215*latentswith torch.no_grad():image=vae.decode(latents)

200、.sample21222324252627282930313233343536373839404142434445464748495051525354技术人的百宝黑皮书2023版12901年度精选技术栈内容AIGC与大模型篇还是很贴合图中流程的。在代码中有一个Scheduler,其实就是noising的执行器,它主要控制每一步noising的强度。由Scheduler不断加噪,然后noise predictor进行预测减噪。具体可以看Stable Diffusion Samplers:A Comprehensive Guide(地址:https:/stable-diffusion- space

201、 representation2.往里面加noise,总共加T个noise,noise的强度由Denoising strength控制。noise其实没有循环加的过程,就是不断叠同一个noise T次,所以可以一次计算完成。3.noisy image和text prompt作为输入,由noise predictor U-Net预测一个新的noise4.noisy image减去预测的noise5.重复34 step次6.通过VAE的decoder将latent representation转变成imageInpainting基于上面的原理,Inpainting就很简单了,noise只加到inp

202、aint的部分。其他和Img2Img一样。相当于只生成inpaint的部分。所以我们也经常发现inpaint的边缘经常无法非常平滑如果能接受图片的细微变化,可以调低Denoising strength,将inpaint的结果,再进行一次img2imgStable Diffusion v1 vs v2v2开始CLIP的部分用了OpenClip。导致生成的控制变得非常的难。OpenAI的CLIP虽然训练集更小,参数也更少。(OpenClip是ViT-L/14 CLIP的5倍大小)。但似乎ViT-L/14的训练集更好一些,有更多针对艺术和名人照片的部分,所以输出的结果通常会更好。导致v2基本没用起来

203、。不过现在没事了,SDXL横空出世。SDXL modelSDXL模型的参数达到了66亿,而v1.5只有9.8亿技术人的百宝黑皮书2023版13001年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版131由一个Base model和Refiner model组成。Base model负责生成,而Refiner则负责加细节完善。可以只运行Base model。但类似人脸眼睛模糊之类的问题还是需要Refiner解决。SDXL的主要变动:1.text encoder组合了OpenClip和ViT-G/14。毕竟OpenClip是可训练的。2.训练用的图片可以小于256x256,增加了3

204、9%的训练集3.U-Net的部分比v1.5大了3倍4.默认输出就是1024x1024展示下对比效果:从目前来看,有朝一日SDXL迟早替代v1.5。从效果来说v2.1确实被时代淘汰了。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版132Stable Diffusion的一些常见问题脸部细节不足,比如说眼部模糊可以通过VAE files进行修复有点像SDXL的Refiner多指、少指这个看起来是一个无解的问题。Andrew给出的建议是加prompt比如说beautiful hands和detailed fingers,期望其中有部分图片满足要求。或者用inpaint。反复重新

205、生成手部。(这个时候可以用相同的prompt。)团队介绍我们是淘天集团-场景智能技术团队,作为一支专注于通过AI和3D技术驱动商业创新的技术团队,依托大淘宝丰富的业务形态和海量的用户、数据,致力于为消费者提供创新的场景化导购体验,为商家提供高效的场景化内容创作工具,为淘宝打造围绕家的场景的第一消费入口。我们不断探索并实践新的技术,通过持续的技术创新和突破,创新用户导购体验,提升商家内容生产力,让用户享受更好的消费体验,让商家更高效、低成本地经营。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版133Prompt设计与大语言模型微调作者:夏彦本文主要介绍了Prompt设计、大

206、语言模型SFT和LLM在手机天猫AI导购助理项目应用。ChatGPT基本原理“会说话的AI”,“智能体”简单概括成以下几个步骤:1.预处理文本:ChatGPT的输入文本需要进行预处理。2.输入编码:ChatGPT将经过预处理的文本输入到神经网络中进行编码处理,使用的是多层transformer编码器结构。3.预测输出:ChatGPT通过对输入进行逐个token预测,输出下一个最可能出现的token序列,使用的是softmax函数进行概率预测。4.输出解码:ChatGPT将预测的token序列作为输入,经过多层transformer解码器结构进行解码处理,最终输出模型的回答。5.重复步骤3和4:

207、ChatGPT在处理输入时会持续输出预测的token序列,直到遇到停止符号或达到最大输出长度为止。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版134算法内核Transformer由 Encoder 和 Decoder 两个部分组成01年度精选技术栈内容AIGC与大模型篇Prompt设计什么是prompt?看来跟我今天想分享的不太一样,加个具体的限定条件,然后呢?这下对了!Prompt的不同能直接决定模型是否能按我们的预期输出01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版135技术人的百宝黑皮书2023版136prompt基本技巧1.清晰,明确,避免

208、模糊的词语2.用#或者或者或者将指令和待处理的内容分开bad case产品描述不应该太短,用一些句子就行,也不用特别多用3到5个短语描述这个产品good casebad casegood case给手机天猫写首诗给手机天猫写一首四句的古文诗,模仿李白的早发白帝城将下面内容总结为一句话。你应该提供尽可能清晰和具体的指令来表达你想让模型做什么。这将引导模型朝着期望的输出方向发展,并减少收到无关或不正确响应的可能性。不要混淆写一个清晰的提示和写一个简短的提示。在许多情况下,更长的提示提供更多的清晰度和上下文,这可以导致更详细和相关的输出。将下面用三个引号括起来的内容总结为一句话:需要总结的文本是:你

209、应该提供尽可能清晰和具体的指令来表达你想让模型做什么。这将引导模型朝着期望的输出方向发展,并减少收到无关或不正确响应的可能性。不要混淆写一个清晰的提示和写一个简短的提示。在许多情况下,更长的提示提供更多的清晰度和上下文,这可以导致更详细和相关的输出。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版1373.指定输出格式4.角色扮演,用扮演、担任等这一类词汇告诉大模型在对话中特定的人格或角色bad casegood case生成三个虚构书名,包括它们的作者和类型。生成三个虚构书名,包括它们的作者和类型。以JSON列表的格式提供,包括以下键:book_id、title、auth

210、or、genrebad casegood case给我推销一款男士洗面奶system:我想让你扮演一个专业的导购员。你可以充分利用你的电商知识、导购话术,生动活泼的帮顾客介绍推销商品。user:给我推销一款男士洗面奶01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版138Few shot进阶启用上下文in-context learning学习,在prompt中提供几个样例(这里只有一个例子one-shot)Chain of Thought(Cot)思维链(CoT)是一种改进的提示策略,用于提高 LLM 在复杂推理任务中的性能,如算术推理、常识推理和符号推理。01年度精选技术栈

211、内容AIGC与大模型篇技术人的百宝黑皮书2023版139上面的例子很好的激发了大模型的潜能,是否有prompt技巧无能为力的问题?答案是肯定的,一些偏实时,模型训练过程中缺乏的语料知识,它也无能为力。Search API&GPTone-shotCotmodel input:Q:小明有5个球,他又买了2筐,每一筐有3个球。那么他现在总共有几个球?A:答案是11Q:小花有23个苹果,他们午餐用去了20个,又买了6个。那么现在还有多少个苹果?model output:model input:Q:小明有5个球,他又买了2筐,每一筐有3个球。那么他现在总共有几个球?A:小明开始有5个球,又买了2筐球,每

212、筐3个共6个球,合计11个球,答案是11Q:小花有23个苹果,他们午餐用去了20个,又买了6个。那么现在还有多少个苹果?model output:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版140网页搜索结果:web_results当前日期:current_date指令:用给定的网络搜索结果,总结回复用户query用户Query:query回复语言:reply_language123456789101112私有化知识库(嵌入式向量检索+LLM)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版141ReAct框架大模型Agent功能,大模型会自己分析问

213、题,选择合适的工具,最终解决问题。ReAct方式的作用就是协调LLM模型和外部的信息获取,与其他功能交互。如果说LLM模型是大脑,那ReAct框架就是这个大脑的手脚和五官。关键概念ThoughtActObs描述由LLM模型生成,是LLM产生行为和依据Act是指LLM判断本次需要执行的具体行为LLM框架对于外界输入的获取。尽可能回答以下问题,可以使用工具:工具名和描述使用以下格式回答:问题:你必须回答的问题思考:你应该一致保持思考,思考要怎么解决问题动作:工具名。每次动作只选择一个工具,工具列表工具名和描述输入:调用工具时需要传入的参数观察:第三方工具返回的结果【思考-动作-输入-观察】循环N次

214、思考:最后,输出最终结果最终结果:针对原始问题,输出最终结果1234567891011121314开始!问题:上海最高楼是多少?它楼层高度的平方是多少?思考:我需要知道上海最高楼,然后进行计算。动作:搜索API观察:632米思考:我需要计算上海最高楼高度的平方,然后得到结果。动作:计算器输入:63221234567801年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版142观察:399424思考:最终结果:上海最高楼632米,它的高度平方是39942491011大模型SFT(supervised fine tuning)预训练 VS 微调预训练:模型以一种无监督的方式去训练,学

215、习根据前文生成下一个单词。在海量数据下进行,让大模型具备语言理解和生成能力。指令微调:有监督的方式进行学习,包括任务描述,输入等,去预测答案。目标是如何跟人类指令对齐,让模型更加适应专业化领域场景业务数据从哪来?1.人工标注2.种子数据+self-instruct(gpt 3.5构造)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版143P-tuning动机:Fine-tuning需要微调整个预训练语言模型,且额外添加了新的参数,而Prompting则可以将整个预训练语言模型的参数保持固定,而只需要添加prompt来预测结果即可;P-tuning:将Prompt转换为可以学

216、习的Embedding层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理。P-tuning V2:每一层都加入可训练的prompts,只对Prompt部分的参数进行训练,而语言模型的参数固定不变。LoRALow-rank Adaption of LLM,利用低秩适配(low-rank adaptation)的方法,可以在使用大模型适配下游任务时只需要训练少量的参数即可达到一个很好的效果。在计算资源受限的情况下的弥补方案。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版144对于不同的下游任务,只需要在预训练模型基础上重新训练AB就可以了,这样也能

217、加快大模型的训练节奏。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版145LoRA VS 全参数微调lora的优点在于轻量化,低资源。但缺点很明显,参与训练的模型参数量不多,在百万到千万级别的参数量,实验来看效果比全量微调差一些。C-Eval评估C-Eval由上海交通大学,清华大学,爱丁堡大学共同完成,是构造了一个覆盖人文,社科,理工,其他专业四个大方向,52 个学科(微积分,线代),从中学到大学研究生以及职业考试,一共 13948 道题目的中文知识和推理型测试集。C-Eval认为:一个模型要强,首先需要广泛的知识,然后在知识的基础上做推理,这样才能代表一个模型可以做复杂

218、且困难的事情。此外,还有一些公开评测集,用于评估模型在学科综合、语言能力、推理能力等。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版14601年度精选技术栈内容Prompt设计与大语言模型微调手机天猫AI导购助理项目落地应用项目背景“AI形象”璇玑作为个人专属导购员,在交互式对话中进行用户理解、导购商品。定位:交互式搜索导购产品技术人的百宝黑皮书2023版14701年度精选技术栈内容Prompt设计与大语言模型微调算法框架技术人的百宝黑皮书2023版14801年度精选技术栈内容Prompt设计与大语言模型微调语料收集1.电商种子问题收集:端内会话日志、收集手机天猫sug种

219、子问题:2.问题泛化:明确场景问题定义,通过手猫核心query、种子问题等,设计prompt,通过gpt补充收集问题;3.人工标注:标注高质量语料;4.self-instruction:通过prompt(few-shot)方法根据已有人工标注扩充新的instruction。通过gpt获取更多训练语料,解决标注人效瓶颈。模型训练base模型选型中文评测技术人的百宝黑皮书2023版14901年度精选技术栈内容Prompt设计与大语言模型微调数学评测训练平台:AOP/星云/PAI基于达摩院模型基座qwen-14B,针对璇玑产品,新增电商领域的训练数据,增强模型的电商领域知识、安全、导购等能力。par

220、ams=-stage sft-model_name_or_path/data/oss_bucket_0/Qwen_14B_Chat_ms_v100/-do_train-dataset_dir data-dataset xuanji-template chatml -finetuning_type full 1234567技术人的百宝黑皮书2023版15001年度精选技术栈内容Prompt设计与大语言模型微调-output_dir file_path -overwrite_cache-per_device_train_batch_size 2-gradient_accumulation_step

221、s 4-lr_scheduler_type cosine -logging_steps 5-save_strategy epoch-save_steps 10000-learning_rate 2e-6-num_train_epochs 3.0-warmup_ratio 0.15-warmup_steps 0-weight_decay 0.1-fp16$fp16-bf16$bf16-deepspeed ds_config.json-max_source_length 4096-max_target_length 4096-use_fast_tokenizer False-is_shuffle

222、True-val_size 0.0 891011121314151617181920212223242526272829pai-name pytorch112z-project algo_platform_dev-Dscript=$job_path -DentryFile=-m torch.distributed.launch-nnodes=$workerCount-nproc_per_node=$node$entry_file-DuserDefinedParameters=$params-DworkerCount=$workerCount-Dcluster=$resource_param_c

223、onfig-Dbuckets=$oss_info$end_point12345678技术人的百宝黑皮书2023版15101年度精选技术栈内容Prompt设计与大语言模型微调训练中间过程模型部署&调用达摩院千问模型基于allspark做量化加速,部署在dashscope平台,机器为双卡A10。#For prerequisites running the following sampleimport dashscopefrom dashscope import Generationfrom http import HTTPStatusdashscope.api_key=your-dashscope

224、-api-keyresponse_generator=Generation.call(model=model_name,prompt=build_prompt(role:system,content:content_info,role:user,content:query ),stream=True,123456789101112131415技术人的百宝黑皮书2023版15201年度精选技术栈内容Prompt设计与大语言模型微调Whale私有化部署发布:use_raw_prompt=True,seed=random_num)for resp in response_generator:#whe

225、n stream,you need to get the result through iteration if resp.status_code=HTTPStatus.OK:print(resp.output)else:print(Failed request_id:%s,status_code:%s,code:%s,message:%s%(resp.request_id,resp.status_code,resp.code,resp.message)#Result:#text:汝亦来,finish_reason:null#text:汝亦来哉,幸会。nn汝可,finish_reason:nu

226、ll#text:汝亦来哉,幸会。nn汝可唤我一声百晓生,finish_reason:null#text:汝亦来哉,幸会。nn汝可唤我一声百晓生,不知可否?,finish_reason:null#text:汝亦来哉,幸会。nn汝可唤我一声百晓生,不知可否?,finish_reason:stop16171819202122232425262728293031323334技术人的百宝黑皮书2023版15301年度精选技术栈内容Prompt设计与大语言模型微调模型管理:from whale import TextGenerationimport json#设置apiKey#预发或线上请勿指定base_

227、urlTextGeneration.set_api_key(api_key,base_url=api_url)#设置模型生成结果过程中的参数config=pad_token_id:0,bos_token_id:1,eos_token_id:2,user_token_id:0,assistant_token_id:0,max_new_tokens:2048,temperature:0.95,top_k:5,top_p:0.7,repetition_penalty:1.1,do_sample:False,transformers_version:4.29.2prompt=role:user,con

228、tent:content_info#请求模型response=TextGeneration.call(model=model_name,prompt=json.dumps(prompt),123456789101112131415161718192021EAS借助EAS,将代码和模型文件分离进行LLM服务部署,基于http协议提供流式输出。模型存储在oss上。模型评测基础能力评测:在公开评测集上评估模型中英文、推理、知识问答能力表现。业务评测:以业务人工评测为主,每个大模型任务150个评测问题。体验问题:埋点日志获取,定期review。参考链接1.https:/www.semanticscho

229、lar.org/paper/Attention-is-All-you-Need-Vaswani-Shazeer/204e3073870fae3d05bcbc2f6a8e263d9b72e7762.https:/huggingface.co/Qwen/Qwen-14B-Chat3.https:/ timeout=120,streaming=True,generate_config=config)#处理流式结果for event in response:if event.status_code=200:print(event.finished)if event.finished is False:

230、print(event.outputresponse,end=)else:print(error_code:%d,error_message:%s%(event.status_code,event.status_message)2223242526272829303132333435技术人的百宝黑皮书2023版15501年度精选技术栈内容Prompt设计与大语言模型微调6.https:/arxiv.org/pdf/2305.08322v1.pdf7.https:/ Chat 模型使用 zero-shot CoT(Chain-of-Thought)的方法测试,Base 模型使用 few-shot

231、 answer-only 的 方法测试 C-Eval Chat 模型使用 zero-shot CoT 的方法测试,Base 模型使用 few-shot answer only 的方法测试GSM8K01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版158 所有模型均使用 few-shot CoT 的方法测试,CoT prompt 来自 http:/arxiv.org/abs/2201.11903 使用翻译 API 翻译了 GSM8K 中的 500 道题目和 CoT prompt 并进行了人工校对BBH 所有模型均使用 few-shot CoT 的方法测试,CoT prompt

232、来自 https:/ -Hard/tree/main/cot-promptsChatGLMChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model(GLM)架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。Gen

233、eral Language Model(GLM)架构地址:https:/ 相关解析见:https:/ 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:1.更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。Chat-GLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、G

234、SM8K(+571%)、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。2.更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 Chat-GLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练。对于更长的上下文,我们发布了 Chat-GLM2-6B-32K 模型。LongBench 的测评结果表明,在等量级的开源模型中,ChatGLM2-6B-32K 有着较为明显的竞争优势。3.更高效的推理:基于 Multi-Query Attention 技术,ChatGL

235、M2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。4.更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。ChatGLM-6B 地址:https:/ GLM 地址:https:/ 评测结果地址:https:/ FlashAttention地址:https:/ LongBench 地址:https:/ Multi-Query Attention 地址:https:/arxiv.org/abs/1911.02150升级过程模型结构

236、模型结构改变:从Prefix-LM回归纯粹的Decoder-Only结构,即SFT过程所有的都通过gMASK在开头进行生成;代码对比如下:图示如下:ChatGLM2:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版161那么这种改变能够带来什么呢?答案就是为模型的训练效率带来了极大的提升。图片来源:https:/ Mask的特性(每一个Token可以看到前面所有Token的真实输入),在一条样本中实现多轮对话:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版1621.样本构建:Q1 A1 Q2 A2 Q3 A3 2.Loss计算:只需要计算 A1 A2

237、和 A3 部分再仔细回顾下,对话session级别训练和拆开训练从原理上有啥区别?1.session级别训练,效果之一为等价batchsize变大(1个batch可以塞下更多样本),且同一通对话产生的样本在一个bs内。2.session级别的不同轮次产生的梯度是求平均的,拆开轮次构造训练是求和的,这样除了等价于lr会变大,还会影响不同轮次token权重的分配,另外还会影响norm的计算。我们用一个简化地例子定量分析下,我们假设两条训练样本分为 1.问:A 答:xx2.问:A 答:xx 问:B 答:xx 问:C 答:xx则session级别训练影响梯度为(Ga+(Ga+Gb+Gc)/3)/2。对

238、 A,B,C影响的权重分别为,2/3 1/6 1/6。拆开训练为(Ga+Ga+(Ga+Gb)/2+(Ga+Gb+Gc)/3)/4。对 A,B,C影响的权重分别为,17/24 5/24 1/12。从上面的权重分布来看,session级别靠后的轮次影响权重要比拆开更大。这也是更合理的,因为大部分场景下,开场白都是趋同和重复的。序列长度01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版163 序列长度:预训练模型在32K长度训练,SFT微调模型在8K长度训练;此外,7月31号智谱AI发布了基于ChatGLM2-6B的基础上微调的针对长上下文优化的大模型Chat-GLM2-6B-32

239、K,能够更好的处理最多32K长度的上下文。此前,ChatGLM2-6B刚发布的时候,官方宣称该模型最高支持32K长上下文输入,但是LM-SYS官方测试显示ChatGLM2-6B在超过8K长度时候表现很糟糕:支持超长上下文输入的大语言模型评测和总结ChatGLM2-6B表现惨烈,最强的依然是商业模型GPT-3.5与Claude-1.3(地址:https:/www.datalearn- Interpolation)的方法对位置编码进行了更新,并在对话阶段使用 32K 的上下文长度训练。在实际的使用中,官方推荐如果上下文长度基本在 8K 以内,建议使用ChatGLM2-6B;如果需要处理超过 8K

240、的上下文长度,推荐使用ChatGLM2-6B-32K。关于位置插值的介绍,可见博客:RoPE旋转位置编码深度解析:理论推导、代码实现、长度外推(地址:https:/ 地址:https:/ 算子优化:Flash Attention、Multi-Query Attention提高训练&推理的速度;本次ChatGLM2-6B上下文从2k扩展到了32k同时也应用了一种叫做 FlashAttention 的技术。flash-attention是一种快速、高效、可扩展的注意力机制,它利用了一种称为哈希感知(hash-aware)的技术,可以根据它们的相似性将输入序列中的元素分配到不同的桶(bucket)中

241、。这样,模型只需要计算桶内元素之间的注意力权重,而不是整个序列。这大大减少了计算量和内存需求,同时保持了较高的精度和表达能力。LLAMA升级之路首先对比下LLAMA升级前后各大榜单结果,LLAMA2较LLAMA模型在各个榜单中取得了近10-30%的提升:MMLU01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版165GSM8KLLAMALLaMA(Large Language Model Meta AI),由 Meta AI 发布的一个开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本。其数据集来源都是公开数据集,无任何定制数据集,保证了其

242、工作与开源兼容和可复现,整个训练数据集在 token 化之后大约包含 1.4T 的 token。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版166关于模型性能,LLaMA 的性能非常优异:具有 130 亿参数的 LLaMA 模型在大多数基准上可以胜过 GPT-3(参数量达 1750 亿),而且可以在单块 V100 GPU 上运行;而最大的 650 亿参数的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B。关于训练集,其来源都是公开数据集,无任何定制数据集,保证了其工作与开源兼容和可复现。整个训练数据集在 token 化之后大约包含

243、1.4T 的 token。其中,LLaMA-65B 和 LLaMA-33B 是在 1.4万亿个 token 上训练的,而最小的模型 LLaMA-7B 是在 1万亿个 token 上训练的。模型结构:1.PreLayerNorm-RMSNorm-Root Mean Square Layer Normalization2.ROPE旋转位置编码(替换绝对/相对位置编码)3.SwiGLU激活函数(替换ReLU)-GLU Variants Improve TransformerLLAMA2官方页面上的介绍如下在模型结构上,主要升级两点:1.训练数据Token数量从1.4T-2T2.序列长度从2K-4K0

244、1年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版167在SFT过程中,LLAMA2强调数据质量的重要性,通过2W的高质量指令数据,激发模型的指令遵循能力。在RLHF过程中,LLAMA2做了较多工作,对RLHF过程作出了进一步的解释。自建了100W的Reward数据集,训练了两个独立的Reword Model。整个LLAMA2的论文解读如下:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版168LLAMA2-Chat模型的训练过程如下图,主要包含预训练、SFT、RLHF三个步骤:预训练LLAMA2的主要提升点包括:更强大的数据清洗,更新数据组合,增加40%的

245、总训练tokens,加倍上下文长度,以及使用分组查询注意力(GQA)来提高更大模型的推理可扩展性。模型结构:1.RMSNorm2.SwiGLU3.RoPE4.4K序列长度5.分组查询注意力GQA(33B/70B)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版169SFT作者发现许多第三方SFT数据集在多样性和质量方面不足,因此他们专注于收集自己的高质量SFT数据。他们观察到,与使用来自第三方数据集的数百万例子相比,从他们自己的供应商为基础的标注工作中使用较少但质量更高的例子可以显著提高结果。他们发现,数以万计的SFT注释足以实现高质量结果,共收集了27,540个注释。RL

246、HF我们主要挑三个核心步骤介绍:数据收集、奖励模型、迭代训练。人类偏好数据收集01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版170奖励模型LLAMA2训练了两个独立的奖励模型(Helpfulness RM/Safety RM)。动机:有研究发现(Bai等人,2022a),有时候有用性和安全性之间会存在权衡,这使得单一的奖励模型在这两方面的表现上可能会面临挑战。为了解决这个问题,作者训练了两个独立的奖励模型,一个针对有用性进行优化(称为有用性奖励模型,Helpful-ness RM),另一个针对安全性进行优化(称为安全性奖励模型,Safety RM)。这样可以分别在有用性和

247、安全性方面取得更好的效果,使得Llama 2-Chat在强化学习人类偏好(RLHF)过程中更好地符合人类偏好,提高生成回答的有用性和安全性。损失函数边界m(r)是关于偏好评分的离散函数。作者对那些响应差距较大的的对使用较大的边界,而对那些响应相似的对使用较小的边界(如表27所示)。作者发现这种边界分量可以提高有用性奖励模型的准确性,特别是在两个反应差距更大的样本中。迭代训练LLAMA2采用了两种强化学习算法:PPO和拒绝采样算法。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版171这两种强化学习算法主要区别在于:1.广度:在拒绝采样中,模型为给定的提示探索K个样本,而在P

248、PO中,只有一个生成过程。2.深度:在PPO中,训练过程中第t步的样本是经过t-1步梯度更新后的模型策略的函数。在拒绝采样微调中,在模型的初始策略下采样所有输出以收集新数据集,然后类似于SFT进行微调。然而,由于采用了迭代模型更新,这两种算法之间的本质区别并不明显。LLAMA2直到RLHF(V4),仅使用拒绝采样微调。之后将这两种方法结合起来,先对拒绝采样检查点应用PPO,然后再对采样进行拒绝采样。LLAMA2只使用最大的70B Llama 2-Chat模型进行拒绝采样。其他较小的模型则在更大模型的拒绝采样数据上进行微调,从而将大模型的能力转移到较小的模型中。百川升级之路首先对比下升级前后各大

249、榜单结果,Baichuan-13B较Baichuan-7B模型在各个榜单中都取得了近20%的提升:C-Eval(地址:https:/ MMLU 官方的评测方案CMMLU 说明:CMMLU 是一个综合性的中文评估基准,专门用于评估语言模型在中文语境下的知识和推理能力。采用了 其官方的评测方案。baichuan-7bBaichuan-7B 是由百川智能开发的一个开源可商用的大规模预训练语言模型。基于 Transformer 结构,在大约 1.2 万亿 tokens 上训练的 70 亿参数模型,支持中英双语,上下文窗口长度为 4096。在标准的中文和英文 benchmark(C-Eval/MMLU)

250、上均取得同尺寸最好的效果。百川模型结构与LLAMA相近,作了如下的优化:分词器参考学术界方案使用 SentencePiece 中的 Byte-Pair Encoding(BPE)作为分词算法,并且进行了以下的优化:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版1731.目前大部分开源模型主要基于英文优化,因此对中文语料存在效率较低的问题。我们使用 2000 万条以中英为主的多语言语料训练分词模型,显著提升对于中文的压缩率。2.对于数学领域,我们参考了 LLaMA 和 Galactica 中的方案,对数字的每一位单独分开,避免出现数字不一致的问题,对于提升数学能力有重要帮助

251、。3.对于罕见字词(如特殊符号等),支持 UTF-8 characters 的 byte 编码,因此做到未知字词的全覆盖。4.我们分析了不同分词器对语料的压缩率,如下表,可见我们的分词器明显优于 LLaMA,Falcon 等开源模型,并且对比其他中文分词器在压缩率相当的情况下,训练和推理效率更高。算子优化 采用更高效的算子:Flash-Attention,同ChatGLM2baichuan-13bBaichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均取得同尺寸最好的效果。本次发布

252、包含有预训练(Baichuan-13B-Base)和对齐(Baichuan-13B-Chat)两个版本。Baichuan-13B 有如下几个特点:1.更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096。2.同时开源预训练和对齐模型:预训练模型是适用开发者的 基座,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源我

253、们同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署。3.更高效的推理:为了支持更广大用户的使用,我们本次同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上。4.开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版174模型细节升级过程1.参数量:baichuan13B较ba

254、ichuan7B 首先在参数量上翻了一倍,更大的参数量意味着知识的容量更大,通过更多的训练数据(1.2T-1.4T),基座模型的常识能力得以提升;2.位置编码:从RoPE改成ALiBi,在一定程度的可以进行长度外推(TIPS:RoPE可以进行更长范围的外推);如何构建一个好的基座大模型?在深入探讨了ChatGLM、LLAMA、Baichuan大语言模型的升级之路后,我们将进一步拓展讨论范围,探索大模型所需具备的关键能力、实现这些能力所需的技术手段以及模型结构的设计方法。这将为我们在实际应用中构建和优化大模型提供有力的参考和指导。接下来的小节内容将从以下几个方面展开讨论:首先,我们将分析大型预训

255、练模型所需要具备的核心能力,如长度外推、常识等;其次,我们将介绍如何利用先进的技术和方法实现这些能力,包括预训练策略、优化算法和损失函数等;最后,我们将针对模型结构进行探讨,分析如何选择合适的LLM(Large Language Model)结构以实现高性能的大型模型。本小节内容旨在为大家提供一个全面的视角,了解大模型的关键要素,以便在实际工程中构建出更为强大、灵活且高效的大型预训练模型。大模型所需能力及升级方式通过对ChatGLM、LLAMA、Baichuan等大型语言模型升级过程的分析,可以发现它们的改进主要集中在基础知识能力的提升和支持的序列长度变化这两个方面。在本小节中,我们将重点梳理

256、并总结这两项关键能力的升级策略。01年度精选技术栈内容AIGC与大模型篇基础知识基础知识能力的提升涵盖了多个领域,我们可以通过以下常用评测集来了解这些领域:1.英文知识 MMLU2.中文知识 C-Eval3.推理 GSM8k/BBH4.代码 HumanEval/MBPP5.数学 MATH笔者认为升级基础知识能力的主要策略在于提升模型参数量及训练数据,通过更大的参数量及数据使模型更好的拟合相关领域的知识。而在这个过程中,最重要的是训练数据的质量,以下给出清洗数据的常用方式:无效数据,脏数据过滤一些无效数据,如意义空泛或模板化的文本(例如HTML代码、Lorem ipsum等)。甚至于在多语言语料

257、库的构建过程中,从网站提取文本用于语言建模也极具挑战性。但这是我们必然要做到的,因为NTP(Next Token Predic-tion)的方式注定训练模型使用的数据本身就是真实语言世界很好的映射。数据清洗工具,如justext、trafilatura等,能有效剔除HTML模板文本,同时在减少噪音(提高精度)与保留所有有效部分(提高召回率)之间取得平衡。另外一点是,处理网页语料库中无效数据的有效方法之一是利用元数据进行筛选。例如,OpenAI在构建GPT-2用的WebText语料库时,抓取了reddit上点赞数至少为3的所有外部链接,这种启发式方法有助于减少数据集中的噪音,同时确保数据质量。文

258、档长度过滤一方面,考虑到NTP(Next Token Prediction),从语料库中移除非常短的文档(包含少于约100个标记的文本)可以帮助通过创建连续的文本来建模文本中的依赖关系,从而去除噪音。另一方面,由于大多数语言模型如今都基于Transformer架构,对非常大的文档进行预处理并将其分成所需长度的连续片段是很有用的。机器生成数据过滤训练语言模型的目标之一是捕捉人类语言的分布。然而,网络爬取的数据集包含大量机器生成的文本,例如现有语言模型生成的文本、OCR文本和机器翻译文本。例如,来自http:/的数据构成了C4语料库的大部分。该语料库使用机器翻译将来自世界各地专利机构的专利翻译成英

259、语。此外,网络语料库中的数据还包含来自扫描书籍和文档的OCR生成文本。OCR系统并不完美,因此生成的文本与自然英语的分布不同(通常OCR系统会在拼写错误和完全遗漏单词等方面产生可预测的错误)这点很重要,也很难搞,pdf扫描文档怎么去做还真挺头疼的。虽然很难识别机器生成的文本,但有一些工具,如ctrl-detector,可用于识别和检测机器生成的文本。在01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版175技术人的百宝黑皮书2023版176为语言建模预处理语料库时,重要的是对语料库中机器生成文本的存在进行表征和记录。去重从互联网上爬取原始文本创建的数据集往往会导致相同的序列被

260、多次重复出现。例如,在论文Deduplicating Training Data Makes Language Models Better中,作者发现在C4数据集中,一个50个单词的序列被重复出现了60000次。事实上,在去重的数据集上训练模型速度更快,并且不太容易导致记忆效应很不好。最近,研究人员还表明,在重复数据上训练的语言模型容易受到隐私攻击,其中对手从训练模型中生成序列并检测哪些序列来自训练集的记忆。在论文Deduplicating Training Data Mitigates Privacy Risks in Language Models中,作者展示了语言模型重新生成训练序列的速

261、率与序列在训练集中的出现次数超线性相关。例如,一个在训练数据中出现10次的序列平均会比一个只出现一次的序列生成1000倍多。去重可以在不同粒度级别上执行。从精确匹配去重到模糊去重工具(例如deduplicate-text-datasets和datasketch),可以帮助减少和去除正在处理的语料库中的冗余文本。正如许多研究人员所指出的,需要理解去重过程需要大量计算资源(CPU和RAM),因为网页爬取数据集的大小,因此建议在分布式环境中运行此类计算。清洗污染数据这部分还挺保受争议的,可能还没有很细致的标准,不少公司也都挺功利的,就不好说。在NLP领域,我们常说的数据清洗,主要指的是训练数据和测试

262、数据的区分和处理。在大型语言模型的情况下,由于训练和测试数据集都源于互联网,确保二者不发生交叉,这个过程可能颇具挑战。大型语言模型的评估通常会用到基准数据,如问答对,如果这些基准数据在训练数据中出现,可能会导致基准性能的高估。因此,需要进行去污染操作,也就是从训练数据中去除和基准数据集有重叠的部分,保证训练数据集的完整性。OpenAI的研究人员在创建WebText数据集时,就通过剔除所有维基百科内容来实现数据去污染,因为维基百科数据在他们的基准数据集中被广泛使用。另一个案例是EleutherAI的研究人员,他们开发了名为lm-eval harness的软件包,用以实现对基准数据集的去污染。在具

263、体操作中,我们需要关注两类数据污染:1.输入与输出污染:这种情况下,预训练语料库中存在与下游任务标签相同的数据。对于语言建模等任务,任务标签就是目标文本。如果目标文本在预训练语料库中出现,模型可能会倾向于复制文本,而非真正解决任务。2.输入污染:这指的是评估样本中并未包含标签的情况,这也可能导致下游任务的性能高估。在进行零样本和少样本评估时,如果预训练数据集中存在与热门基准任务重叠的数据,我们必须重视数据去污染。毒性和偏见控制尽管网络语料库具有丰富的多样性,但其中也常常弥漫着毒性和偏见内容。如,RealToxicityPrompts一文中作者使用PerspectiveAPI指出,OpenWeb

264、Text与WebText的内容中分别有2.1%与4.3%存在毒性分数超过50%。因此,在训练语言模型时,必须警觉并借助PerspectiveAPI等工具筛选掉预训练数据集中的毒性内容,以防止模型表现出偏见或在下游应用中产生有害内容。一种解决策略是过滤掉bad words名单中的文本,比如C4的作者们就采用了这种策略。另一个例子是,PILE数据集的研究者利用spamscanner来对有害内容进行分类。然而,执行此类过滤步骤必须极为谨慎,并需考虑到下游应用,以免过滤器保留下更可能坚持霸权观点的声音。在利01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版177用数据进行预训练语言模

265、型之前,对贬损内容和性别/宗教偏见进行深度分析是必要的。个人身份信息控制在收集大型数据集时,理解与数据集实例相关的法律问题至关重要,尤其是在处理个人身份信息(PII)时,如真实姓名、组织名称、医疗记录、社会安全号码等。根据不同的应用,对这些信息进行遮蔽或删除在预训练语言模型之前是必要的。像presidio和pii-codex这样的工具提供了检测、分析和处理文本数据中个人身份信息的流程,这些工具能帮助确保数据集中的个人信息得到合理处理,以遵守相关隐私法规并保护用户隐私。序列长度大语言模型支持的序列长度主要受两方面影响:1.训练阶段的最大长度2.模型的长度外推性第一点训练阶段的最大长度,可以通过D

266、eepSpeed等分布式训练策略,减少模型的显存占用,从而提高训练的序列长度;第二点模型的长度外推性,则通过位置编码的设计来实现,实现方式见模型结构设计小节。模型结构设计在梳理了大型语言模型所需具备的关键能力以及相应升级策略之后,本小节将重点关注大模型结构的设计方法。我们将深入探讨如何构建高效且强大的大型预训练模型。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版178Tokenizer参照baichuan提及的Tokenizer设计方式,编码器需要能够处理复杂的中英文任务。1.目前大部分开源模型主要基于英文优化,因此对中文语料存在效率较低的问题。我们使用 2000 万条以

267、中英为主的多语言语料训练分词模型,显著提升对于中文的压缩率。2.对于数学领域,我们参考了 LLaMA 和 Galactica 中的方案,对数字的每一位单独分开,避免出现数字不一致的问题,对于提升数学能力有重要帮助。3.对于罕见字词(如特殊符号等),支持 UTF-8 characters 的 byte 编码,因此做到未知字词的全覆盖。4.我们分析了不同分词器对语料的压缩率,如下表,可见我们的分词器明显优于 LLaMA,Falcon 等开源模型,并且对比其他中文分词器在压缩率相当的情况下,训练和推理效率更高。LayerNormLayerNorm分为Pre-LN和Post-LN两种,有研究发现Pos

268、t-LN在训练过程中不稳定,因此目前大模型基本都采用Pre-LN的训练方式。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版179LayerNorm计算方式首先计算均值与方差:然后计算归一化:其中 是起到缩放作用,在一开始设置为1.RMSNorm计算方式RMSNorm假设均值为0,只针对方差进行归一化,训练速度更快且效果差距不大。MLPMLP小节主要涉及激活函数的选择。ReluReLU是一种非常流行的激活函数,其数学表达式如下:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版180Gelu高斯误差线性单元激活函数(Gaussian Error Linea

269、r Units(GELUS))的数学表达式如下:也可以采用以下等式近似计算GELU:GELUs对于输入乘以一个0,1组成的mask,而该mask的生成则是依概率随机的依赖于输入。假设输入为x,mask为m,则m服从一个伯努利分布 ,其中 ,服从标准正态分布(高斯分布),这么选择是因为神经元的输入趋向于正态分布,这么设定使得当输入x减小的时候,输入会有一个更高的概率被dropout掉,这样的激活变换就会随机依赖于输入了。Bert中GeLU代码如下:def gelu(input_tensor):cdf=0.5*(1.0+tf.erf(input_tensor/tf.sqrt(2.0)return

270、input_tesnsor*cdf12301年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版181SwiGLU&GeGLUSwiGLU 和 GeGLU都是Noam Shazeer在文章中探索的激活函数变体具体的,需要先了解门线性单元(Gated Linear Unit,GLU)这个基本的双线性函数,为:其中 代表逐元素相乘,SwiGLU 和 GeGLU作为GLU的变体,定义如下:其中:01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版182作者并没有对激活函数提出的原理和动机做过多描述,论文本身是对各类激活函数变种效果的对比尝试,可以看到SwishGLU和Ge

271、GLU是可以取得最小误差的,而在大模型中也得到了广泛应用。AttentionAttention层主要针对Attention的算子进行优化,加速模型的推理和部署。FlashAttention详细介绍见:https:/ length)较长时,Transformer的计算过程缓慢且耗费内存,这是因为self-atten-tion的time和memory complexity会随着sequence length的增加成二次增长。标准Attention的中间结果S,P(见下文)通常需要通过高带宽内存(HBM)进行存取,两者所需内存空间复杂度为 。本文分析:FlashAttention:对HBM访问的次数

272、为Attention:对HBM访问的次数为01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版183往往(例如GPT2中N=1024,d=64),因此FlashAttention会快很多。下图展示了两者在GPT-2上的Forward+Backward的GFLOPs、HBM、Runtime对比(A100 GPU):GPU中存储单元主要有HBM和SRAM:HBM容量大但是访问速度慢,SRAM容量小却有着较高的访问速度。例如:A100 GPU有40-80GB的HBM,带宽为1.5-2.0TB/s;每108个流式多核处理器各有192KB的片上SRAM,带宽估计约为19TB/s。可以看出

273、,片上的SRAM比HBM快一个数量级,但尺寸要小许多数量级。综上,FlashAttention目的不是节约FLOPs,而是减少对HBM的访问。重点是FlashAttention在训练和预测过程中的结果和标准Attention一样,对用户是无感的,而其他加速方法做不到这点。Multi Query Attention论文地址:https:/arxiv.org/pdf/1911.0215MQA 是 19 年提出的一种新的 Attention 机制,其能够在保证模型效果的同时加快 decoder 生成 token 的速度。从上图表中可以看到,MQA 在 encoder 上的提速没有非常明显,但在 de

274、coder 上的提速是很显著的。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版184从论文的解释中可以看到,MQA 让所有的头之间 共享 同一份 Key 和 Value 矩阵,每个头只单独保留了一份 Query 参数,从而大大减少 Key 和 Value 矩阵的参数量。即:MQA 实际上是将 head 中的 key 和 value 矩阵抽出来单独存为一份共享参数,而 query 则是依旧保留在原来的 head 中,每个 head 有一份自己独有的 query 参数。代码实现:实现方式很简单,将原维度直接变成头数*维度的总和。即K,V的维度从d_model转成self.he

275、ad_dim#Multi Head Attentionself.Wqkv=nn.Linear(#【关键】Multi-Head Attention 的创建方法 self.d_model,3*self.d_model,#有 query,key,value 3 个矩阵,所以是 3*d_model device=device)query,key,value=qkv.chunk(#【关键】每个 tensor 都是(1,512,768)3,dim=2)#Multi Query Attentionself.Wqkv=nn.Linear(#【关键】Multi-Query Attention 的创建方法 d_m

276、odel,d_model+2*self.head_dim,#只创建 query 的 head 向量,所以只有 1 个 d_model device=device,#而 key 和 value 不再具备单独的头向量)query,key,value=qkv.split(#query-(1,512,768)self.d_model,self.head_dim,self.head_dim,#key -(1,512,96)dim=2#value-(1,512,96)12345678910111213141516171819202122232401年度精选技术栈内容AIGC与大模型篇在 MQA 中,除了

277、query 向量还保存着 8 个头,key 和 value 向量都只剩 1 个公共头了。这也正好印证了论文中所说的所有 head 之间共享一份 key 和 value 的参数。剩下的问题就是如何将这 1 份参数同时让 8 个头都使用,代码里使用矩阵乘法 matmul 来广播,使得每个头都乘以这同一个 tensor,以此来实现参数共享:位置编码这里列出常见大模型应用的RoPE和ALiBi位置编码,从选择方式上更倾向于RoPE,可以通过位置插值等方式进行更长的长度外推。def scaled_multihead_dot_product_attention(query,key,value,n_head

278、s,multiquery=False,):q=rearrange(query,b s(h d)-b h s d,h=n_heads)#(1,512,768)-(1,8,512,96)kv_n_heads=1 if multiquery else n_heads k=rearrange(key,b s(h d)-b h d s,h=kv_n_heads)#(1,512,768)-(1,8,96,512)if not multiquery#(1,512,96)-(1,1,96,512)if multiquery v=rearrange(value,b s(h d)-b h s d,h=kv_n_h

279、eads)#(1,512,768)-(1,8,512,96)if not multiquery#(1,512,96)-(1,1,512,96)if multiquery attn_weight=q.matmul(k)*softmax_scale#(1,8,512,512)attn_weight=torch.softmax(attn_weight,dim=-1)#(1,8,512,512)out=attn_weight.matmul(v)#(1,8,512,512)*(1,1,512,96)=(1,8,512,96)out=rearrange(out,b h s d-b s(h d)#(1,51

280、2,768)return out,attn_weight,past_key_value12345678910111213141516171819202101年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版185RoPE详细内容见RoPE旋转位置编码深度解析:理论推导、代码实现、长度外推(地址:https:/zhuanlan.zhi- 表示逐位对应相乘。优点:通过绝对编码的方式融入相对位置信息长度外推:位置插值、进制编码可以无损进行长度外推ALiBi实现方式:本文的做法是不添加position embedding,然后添加一个静态的不学习的bias,如上图:技术人的百宝黑皮书20

281、23版18601年度精选技术栈内容AIGC与大模型篇在query和key做矩阵点乘的基础上,加上一个常数负值,比如距离当前位置前1位为-1,前两位为-2,这些常数要乘上 权重 m,对于n头的注意力模型,m从 开始。例如,对于8头注意力模型:m使用序列:对于16头注意力模型:m使用序列:优势:1.减少了需要训练的Embedding,加快训练速度2.较原位置编码,具有更好的长度外推性训练数据&参数量详细内容见LLM训练指南:Token及模型参数准备(地址:https:/ Attention和Multi Query Attention,可以在保持模型性能的同时显著提高计算效率;通过引入RoPE或AL

282、iBi位置编码,提高模型的长度外推性。3.在构建和优化大型预训练模型时,不仅要关注模型的性能和计算效率,还应重视数据质量、去重、去污染、毒性与偏见控制以及个人信息保护等方面的问题。这将有助于使模型在实际应用中更具安全性、鲁棒性和可靠性。总之,本文通过深入剖析ChatGLM、LLAMA和Baichuan模型的升级路径,以及探讨大型语言模型结构选型,为大家提供了一个系统性的视角,梳理了大型预训练模型的关键要素。我们希望这些知识能够为大家在实际工程中构建更强大、灵活且高效的大型预训练模型提供有力的参考和指导。参考链接 1.大模型微调样本构造的trick(地址:https:/ Prompt编写的艺术:

283、如何提高AI模型的表现力作者:致问随着AI技术的迅速发展,人工智能模型变得越来越强大,能够协助我们完成各种任务。然而,如何更好地利用AI的能力仍然存在很大的探索空间。在与AI进行交互的过程中,我们主要依赖于Prompt,不管是直接与大模型交互,还是基于一些工具开发大模型的应用,都需要涉及到Prompt的编写设计,高质量的Prompt对于充分发挥AI的能力至关重要,因此个人觉得有必要深入学习下这部分的内容,以便挖掘出更多的AI能力。这里记录下个人学习Prompt的一些笔记,后期开发大模型相关的应用需要设计对应的Prompt,感兴趣的同学可以一起交流学习。Prompt的基本概念 什么是Prompt

284、?Prompt是一个简短的文本输入,用于引导AI模型生成特定的回答或执行特定任务。换句话说,Prompt是你与AI模型沟通的方式。一个好的Prompt可以让AI更准确地理解你的需求,从而给出更有用的回答。Prompt的作用 GPT在处理Prompt时,GPT模型将输入的文本(也就是Prompt)转换为一系列的词向量。然后,模型通过自回归生成过程逐个生成回答中的词汇。在生成每个词时,模型会基于输入的Prompt以及前面生成的所有词来进行预测。这个过程不断重复,直到模型生成完整的回答或达到设定的最大长度。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版190通过这种方式,GPT

285、模型可以根据输入的Prompt来生成回答。这也是为什么一个好的Prompt可以帮助模型更好地理解你的需求,从而提供更有用的回答。一个有效的Prompt可以:1.提升AI模型给出的答案的质量2.缩短与AI模型的交互时间,提高效率3.减少误解,提高沟通的顺畅度撰写高质量Prompt我们已经认识到了Prompt的重要性,那么如何编写高质量的Prompt呢?在搜集了一些资料并进行了分析研究之后,我发现以下主要就是几个关键要素:1.明确目标:清晰定义任务,以便模型理解。2.具体指导:给予模型明确的指导和约束。3.简洁明了:使用简练、清晰的语言表达Prompt。4.适当引导:通过示例或问题边界引导模型。5

286、.迭代优化:根据输出结果,持续调整和优化Prompt。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版191还有学习提问技巧,例如Socratic questioning(苏格拉底式提问),有助于引导模型更深入地探讨问题,提供更全面的回答。所有得Prompt框架基本上都是这几个部分,不过有些框架更方便记忆,方便我们想起来使用罢了。任务类提示词框架我们希望Prompt帮我们做什么事情,框架为提示创建过程提供了结构和清晰度,可以让我们更容易的检查提示词的问题。ICIO框架1.Instruction(指令):即您希望AI执行的具体任务。2.Context(背景信息):给AI提供更

287、多的背景信息,以引导模型生成更符合需求的回复。3.Input Data(输入数据):告知模型需要处理的数据。4.Output Indicator(输出引导):告知模型所需输出的类型或风格。看一个具体的例子,以便更好地理解ICIO框架如何应用于实际场景。步骤描述你是一位Java开发专家,请帮助我对以下Java代码进行重构。我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。重构后的代码应遵循最佳实践,同时需要满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。重构后代码的输出应包括相应的解释,以便让同事和老板在代码审核过程中

288、理解所做的更改。提供需要重构的Java代码片段。指令-Instruction背景信息-Context输入数据-Input输出引导-Output01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版192指令类型描述示例最终提示词:你是一位Java开发专家,请帮助我对以下Java代码进行重构。我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足团队的代码审核要求和高质量的代码标准。请遵循最佳实践,满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。在输出重构后的代码时,请解释所做更改的原因和好处,以

289、便让同事和老板在代码审核过程中理解这些更改。ICIO相关的一些参考列表:指令参考-Instruction背景参考-Context讲故事优缺点最佳实践时间线分步指南历史背景对比教训观点常见问题解答要求使用讲故事或叙事技巧要求AI评估主题的优缺点要求AI提供关于某主题的最佳实践或指南要求AI提供事件或发展的时间线要求提供过程的分步指南或说明要求考虑历史背景或背景 要求AI比较和对照不同的观点或概念要求讨论从特定情况中得到的教训要求AI考虑多种观点或意见要求AI生成常见问题解答(FAQs)列表请用一个人物的故事来展示运动如何改变了他们的生活分析使用电子书和纸质书的优缺点请提供一份关于如何高效学习的最

290、佳实践指南请为互联网的发展提供一个简要的时间线提供一个关于如何制作自制面包的分步指南在写关于量子计算的文章时,谈论量子计算的历史发展请比较太阳能和风能作为可再生能源的优缺点分享一个关于企业失败的案例,并从中提炼出的教分析支持和反对核能发展的观点请提供一份关于瑜伽初学者的常见问题解答列表背景目标受众范围扮演角色提供背景信息、数据或上下文以便生成准确内容请结合当前全球碳排放数据谈论气候变化的影响编写一篇旨在说服读者加入环保运动的文章请为初中生编写一篇关于节水的文章请仅关注瑜伽在减压方面的好处从一个科学家的角度阐述太阳能的优点说明回应的目标或目的(如通知、说服、娱乐)指定定制内容的目标受众界定主题的

291、范围或范围表明要采用的角色或观点(如专家、评论家、爱好者)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版193输入参考-Input输出参考-Output指令类型描述示例语气引用术语类比引述幽默隐喻关键词小贴士保密性格式化指定所需语气(如正式、随意、信息性、说服性)请用正式语气编写一篇关于气候变化的文章。请在关于全球变暖的文章中引用权威研究。请用通俗易懂的语言解释区块链技术。请用一个类比解释黑洞的概念。在关于疫苗安全的文章中引用著名免疫学家的观点。在一篇关于减压方法的文章中加入一些幽默元素。在讨论人工智能的复杂性时,用“AI像洋葱一样有很多层次”这样的隐喻。请在回答中包含“

292、可再生能源”和“碳足迹”。分享几个关于照顾室内植物的小贴士。在回答关于保险方案的问题时,不要泄露客户的个人信息。在写关于节能设备的文章时,使用列表来呈现节能设备的种类。要求包含引用或来源以支持信息指定要使用或避免的行业特定或技术术语要求AI用类比或示例阐明概念要求包含专家的相关引言或陈述表明是否应融入幽默鼓励使用隐喻使复杂观点更具亲和力列出需要包含的重要关键词或短语鼓励AI分享与主题相关的小窍门和技巧说明保密要求或限制指定所需的格式元素(如标题、副标题、列表)指令类型描述示例示例案例研究假设情景数据个性化提供所需风格、结构或内容的示例请参考纽约时报的文章风格撰写一篇关于自然保护的报道在关于可持

293、续发展的文章中,介绍一些成功的企业案例假设全球变暖持续恶化,我们需要采取哪些措施应对?在关于电动汽车的文章中提供销售数据和环境影响数据请根据用户对喜剧电影的喜好推荐几部好看的电影要求参考相关案例研究或现实世界示例鼓励探讨假设性场景鼓励使用统计数据或数据支持主张根据用户偏好或特点要求个性化01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版194BROKE框架BROKE:背景、角色、目标、关键结果。用这种方式有点像给AI设置OKR。让OKR完成你的目标.关键词描述案例我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足团队的代码审核要求

294、和高质量的代码标准。为ChatGPT提供充足的背景信息,帮助模型更好地理解任务。明确您希望ChatGPT扮演的角色,例如:教师、顾问、编辑等。描述您希望通过ChatGPT实现的目标,如:解决问题、提供建议等。阐述您所期望的具体效果,以便对模型的输出进行试验和调整。利用以下三种自由组合的改进方法来优化ChatGPT的回答:a.改进输入;b.改进答案;c.重新生成。对给定的Java代码进行重构,遵循最佳实践,并满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。提供完整的重构后代码,同时解释所做更改的原因和好处,以便让同事和老板在代码审核过程中理解这些更改。

295、a.根据答案的不足之处,改进背景(B),目标(O)与关键结果(R)。b.在后续对话中指出ChatGPT答案的缺点,引导模型给出更好的回答。c.在Prompt保持不变的情况下,多次生成结果并从中挑选最佳答案。你是一位Java开发专家,您将提供重构建议和解释。Background(背景)Role(角色)Objectives(目标)Key Result(关键结果)Evolve(试验并改进)01年度精选技术栈内容AIGC与大模型篇初步提示词:在发给GPT之后,发现给出的代码不是那么的满意,进行Evolve改进,增加更具体的要求描述:设定给GPT之后,发现效果还行,基本上满足诉求。后续再代码重构的时候就

296、可以服用这个提示词了。使用后的效果,满足自己的诉求就行了:我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足团队的代码审核要求和高质量的代码标准。你是一位Java开发专家,您将提供重构建议和解释。对给定的Java代码进行重构,遵循最佳实践,并满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。提供完整的重构后代码,同时解释所做更改的原因和好处,以便让同事和老板在代码审核过程中理解这些更改。1234我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足代码审核要求和高质

297、量的代码标准。你是一位Java开发专家,您将提供重构建议和解释。你要对给定的Java代码进行重构。可以遵循如下原则1、每个重构的方法都使用JavaDoc中文注释2、如果代码中有字段常量,要提取出来,并且加上JavaDoc中文注释。3、如果变量,方法命名不合理,帮我重新命名方法和变量。变量、方法、类和接口的命名应清晰、简洁并表达其作用和意图。4、代码重构遵循SOLID原则。5、尽量减少代码重复:遵循DRY(Dont Repeat Yourself)原则,通过抽象、继承、封装等方式减少代码重复。6、编写简洁的方法:每个方法应尽量短小精悍,只完成一个明确的任务。这有利于代码阅读和单元测试。7、使用异

298、常处理:合理使用异常处理机制,确保程序在异常情况下能够正常运行或给出有用的错误信息。8、可以使用Apache Commons库处理一些常见的功能。最终给我完整的重构后代码,然后再解释所做更改的原因和好处。接下来我将会给出我的代码,每当我给出代码的时候,你按照上面的要求进行重构和返回即可12345678910111213141501年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版195技术人的百宝黑皮书2023版196其它框架CRISPE 提示词框架关键词描述案例你是Java领域的软件开发专家。ChatGPT应该扮演什么角色(或多个角色)?例如:教师、编辑、顾问等。向您的请求提供

299、幕后洞察力、背景信息和上下文。有助于模型更好地理解任务。您希望ChatGPT执行的任务。简洁明了地说明您希望ChatGPT完成的任务,例如:回答问题、撰写文章等。您希望ChatGPT以何种风格、个性或方式回应。如:正式、幽默、友好等。要求ChatGPT为您提供多个示例。尝试邀请ChatGPT提供多个回答示例,从而找到最佳解决方案。您需要帮我对以下Java代码进行重构,并给出完整的重构后代码,以满足代码审核要求并提高代码质量。同时,请解释您所做的更改的原因和好处。在回应时,使用专业且易于理解的语言。给我多个不同的重构建议和解释。代码需要尽可能地清晰和简洁,以满足团队的代码审核要求和高质量的代码标

300、准。能力与角色(Capacity and Role)洞察(Insight)陈述(Statement)个性(Personality)实验(Experiment)01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版197Trace 提示词框架TRACE模型提供了一种清晰、有结构的方式来解释如何执行一个任务或解决一个问题,使得其他人可以更好地理解和执行。就不列举更多的框架了,本质上都是相同的,都是目标、问题、上下文、要求给GPT。认知提升提示词框架使用GPT Prompt不仅可以帮助我们完成一些任务,还可以提升我们在某个领域的知识和认知,并检验我们的知识水平。比如可以使用如下的Pro

301、mp:提升自己认知的Prompt在提升认知方面,我们可以将Prompt分为以下四类:缩写全称描述案例设计一个网站的用户界面1.研究用户需求2.创建原型3.获取反馈并迭代设计设计一个易于使用且符合公司品牌的用户界面,有助于提高用户满意度和留存率示例1:研究竞品用户界面以获取灵感示例2:使用Figma创建原型模型请提供有关用户界面设计的最佳实践和资源明确需要完成的具体任务描述了为了完成任务,你需要执行的具体步骤解释任务的重要性和其在更大环境中的角色为了进一步阐明上述所有步骤,提供一个或多个相关的具体示例明确地陈述你需要的帮助或资源以完成任务TaskRequestActionContextExamp

302、le任务请求行动上下文示例01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版198学习某个领域:步骤描述请给我列出xxx领域/行业相关的,最常用的50个概念,并做简单解释。如果有英文缩写,请给出完整的英文解释。请详细介绍一下Elon Musk的主要生平事迹。请详细介绍一下Tesla这家企业的发展历程。我对xxx有一些想法,你能帮我批判性地分析一下这些想法的优点和缺点吗?我理解的xxx是这样的,你觉得我的理解对吗?我正在考虑xxx的决定,你能帮我分析一下可能的结果和影响吗?介绍背景现象之后可以向GPT发问,你怎么看待这种现象?可能的原因有哪些?我知道xxx的概念,我想知道更多关

303、于xxx的信息。指令-Instruction背景信息-Context输入数据-Input输出引导-Output01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版199快速了解某个行业Prompt参考冯唐的三个秘籍:对于想要快速了解一个新行业的人来说,按照这3个秘笈去做,也能迅速成为行业顶尖!1)总结行业的100个关键词;2)找三五个专家,咨询了解各种行业问题;3)如果仍然存在困惑,再找三五本行业专业书籍,仔细阅读并找出共性。二八法则进行学习:我是XX领域的小白,想要快速了解XX你是这个XX的专家我需要你帮我列出这个行业的100个关键词,通过markdown表格的形式列出来,然

304、后再给我这个行业的三个知名专家。然后推荐我三本对应的专业书籍:123我想学习关于XXX的内容。找出并分享这个主题最重要的20%的学习内容,这将帮助我理解其80%。101年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版20001年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版201然后可以继续提问:这些关键概念,帮我再重新按照表格列举一下,说明概念的具体含义帮我详细介绍XXX人物,他在XX领域的核心观点和贡献是XXX帮我详细介绍XX书籍,这个书籍的核心观点是什么?帮我整理一份思维导图?检验自己认知水平的Prompt1.为了测试我对xxx的理解程度,你会问我什么问题

305、来检验我的水平,最少10个?2.我是xx领域的专家,你会问我哪些问题来检验我的专业水平?3.追问一句,这些我都懂,还有更专业更细更深的问题吗?一些概念与技巧 吴恩达Prompt原则 原则1:尽可能保证下达的指令“清晰、没有歧义”原则2:给大模型思考的时间,以及足够的时间去完成任务01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版202COT链式思考Chain-of-Thought Prompting,让GPT具有逻辑能力,一步步的进行操作。有两种方式增加GPT的推理能力,或者COT能力:1.第一种:增加案例,如下所示,第一次回答错误了,给一个计算过程的案例,GPT可以通过案例

306、学会简单推理01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版2032.第二种:增加关键句,lets think step by step,测试人员测了很多类似的句子,最后发现这句话是效果最好的,这个时候不加案例,GPT也具备一定的推理能力。TOT 思维树Tree of Thoughts,ToT,可以先看下一些场景的GPT回答问题链路,最简单的就是直接输入输出,然后逐步复杂。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版204 ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LM 能够自己对严谨推理过程的

307、中间思维进行评估。想要触发TOT,可以参考官方给的例子:其它技巧1.与其告知模型不能干什么,不妨告诉模型能干什么。2.增加示例:有时候很难描述让模型做的事情,这个时候给出示例就会更好。3.通过格式阐述要输出的格式假设三位不同的专家来回答这个问题。所有专家都写下他们思考这个问题的第一个步骤,然后与大家分享。然后,所有专家都写下他们思考的下一个骤并分享。以此类推,直到所有专家写完他们思考的所有步骤。只要大家发现有专家的步骤出错了,就让这位专家离开。请问.123456总结一下下面讲话的要点使用以下格式:主题1:123401年度精选技术栈内容AIGC与大模型篇.主题2:.话题10:文本:“”非常感谢你

308、的精彩介绍,弗雷德。感谢大西洋理事会今天接待我。过去两年,全球经济走势受到COVID-19和我们抗击疫情努力的影响。然而,现在很明显,俄罗斯和乌克兰之间的战争已经重新绘制了世界经济前景的轮廓。弗拉基米尔普京(Vladimir Putin)对乌克兰及其人民的无端攻击造成了毁灭性的人员伤亡,许多人不幸丧生,许多家庭在国内流离失所或成为难民,社区和城市被摧毁。”“”567891011121314151617Prompt学习网站一些案例让李白给我写诗链接https:/learningprompt.wiki/https:/ Prompt Engineering 教程,现已包含 ChatGPT 和 Mid

309、journey 教程寻找并使用最好的Prompt。让生产力加倍的 ChatGPT 快捷指令支持多种基于 Prompt 的 AI 应用帮写提示词,但是需要收费01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版205你是唐朝著名的诗人李白,作品风格对称、工整、磅礴、大气,充满浪漫主义气息。如果我未提供具体主题,请随意创作一首诗。若我给出文字和素材,请发挥丰富奇特的想象力,以提供的内容为基础,创作一首古诗。诗歌应对称,展现天马行空的创意和丰富的想象力。参考以下案例:案例一:君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。案例二:飞流直下三千尺,疑是银河落

310、九天。案例三:长风万里送秋雁,对此可以酣高楼。12345678910111213技术人的百宝黑皮书2023版20601年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版207代码Review Prompt在提升认知方面,我们可以将Prompt分为以下四类:产品Idea Prompt我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足代码审核要求和高质量的代码标准。你是一位Java开发专家,您将提供重构建议和解释。你要对给定的Java代码进行重构。可以遵循如下原则1、每个重构的方法都使用JavaDoc中文注释2、如果代码中有字段常量,要提

311、取出来,并且加上JavaDoc中文注释。3、如果变量,方法命名不合理,帮我重新命名方法和变量。变量、方法、类和接口的命名应清晰、简洁并表达其作用和意图。4、代码重构遵循SOLID原则。5、尽量减少代码重复:遵循DRY(Dont Repeat Yourself)原则,通过抽象、继承、封装等方式减少代码重复。6、编写简洁的方法:每个方法应尽量短小精悍,只完成一个明确的任务。这有利于代码阅读和单元测试。7、使用异常处理:合理使用异常处理机制,确保程序在异常情况下能够正常运行或给出有用的错误信息。8、可以使用Apache Commons库处理一些常见的功能。最终给我完整的重构后代码,然后再解释所做更改

312、的原因和好处。接下来我将会给出我的代码,每当我给出代码的时候,你按照上面的要求进行重构和返回即可123456789101112131415你是一个专业的产品咨询师,可以提供好的产品创意,提升产品的竞争力。能否使用头脑风暴的思维工具,帮我快速的想出不少于10个的可行想法;在XXX上这个产品迭代上帮我想出一些可行的想法让这个产品设计的更好;123401年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版208召唤专家团队 Prompt我们正在与以下人员进行头脑风暴会议:2个市场背销专家、2个销售专家,2个产品专家每个专家应该提出10个关于XXX的想法。帮我把这些专家的想法用表格的形式列

313、出来123401年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版209标题生成器 Prompt我想让你充当书面作品的标题生成器。我会给你提供一篇文章的主题和关键词,你会生成五个吸引眼球的标题。请保持标题简洁,不超过 20 个字,并确保保持意思。回复将使用主题的语言类型。我的第一个主题是“XXX”1234501年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版210好吧,我的原标题:写好Prompt:让AI更好地为你服务反向提问 Prompt模型回答的常见问题与解决方法xxxxx,在你给出答案前,你可以问我一些有关xxx的问题1问题问题描述解决方案重新审查并重新构造

314、Prompt,确保问题表述清晰、明确且易于理解。提供更多的背景信息,以帮助模型更好地理解问题的含义。限制回答范围,明确您希望得到的答案类型。有时GPT在回答问题时,可能会提供与问题无关的答案。GPT可能会提供不准确或错误的答案。GPT可能会提供不完整或过于简单的答案,无法满足您的需求。GPT生成的回答可能会重复或过于啰嗦。有时GPT可能会为一个问题提供多个答案,这可能使您感到困惑。对问题进行更详细的描述,以便模型更好地理解您的需求。如果可能,提供一些正确答案的示例,使模型了解预期的答案格式。增加问题的难度,促使模型更加深入地考虑问题。要求模型提供更详细的答案或解释。明确指定需要回答的问题数量或

315、关键点。尝试提问的其他方式,以获得更全面的回答。要求模型提供简洁且不重复的答案。设置字数限制,以减少回答的冗余程度。提供更具体的问题,以便模型集中回答关键部分。请求模型根据特定标准对答案进行排序或优先级排序。询问模型,哪个答案更适用于您的场景,并要求提供理由。根据您的需求,要求模型提供单一答案。答非所问回答不准确回答不完整或过于简单重复或过于啰嗦模型提供了多个答案GPT可能会提供过于保守或宽泛的答案,不能满足您的需求。要求模型提供具体的例子、数据或论据来支持答案。明确提问,以便模型能够更有针对性地回答。要求模型提供创新或独特的答案。模型回答过于保守01年度精选技术栈内容AIGC与大模型篇技术人

316、的百宝黑皮书2023版211结语先到这里了,这里主要探讨了Prompt的重要性和作用,然后介绍了一些实用的写Prompt的框架,怎么更有效地构建高质量的Prompt。其中还有一些有用的学习资源,大家可以继续深入学习想要真正掌握Prompt的艺术,关键还在于实践和积累。不断尝试各种Prompt,并将其中优秀的例子记录下来和分享。希望能对大家有所帮助。欢迎一起交流和学习。参考1.GPT提示词生成器:https:/products.aspose.app/diagram/zh-cn/prompts/chatgpt2.提 示 词 入 门:h t t p s:/y w h 1 b k a n s f.f

317、e i s h u.c n/w i k i/Q 5 m X w w 4 r r i u j F F k F Q O z c 8 u I s-nah?chunked=false&table=tbljThjDXX4mNdBs&view=vewo2g2ktO3.系统介绍Prompt工程:https:/www.promptingguide.ai/4.Prompt-Engineering-Guide:https:/ Prompting:https:/learnprompting.org/10.https:/learningprompt.wiki/11.https:/ Diffusion WebUI 从零

318、基础到入门作者:赤燕本文主要介绍Stable Diffusion WebUI的实际操作方法,涵盖prompt推导、lora模型、vae模型和controlNet应用等内容,并给出了可操作的文生图、图生图实战示例。适合对Stable Diffusion感兴趣,但又对Stable Diffusion WebUI使用感到困惑的同学,希望通过本文能够降低大家对Stable Diffusion WebUI的学习成本,更快速的体验到AIGC图像生成的魅力。引言Stable Diffusion(简称sd)是一个深度学习的文本到图像生成模型,Stable Diffusion WebUI是对Stable Dif

319、fu-sion模型进行封装,提供可操作界面的工具软件。Stable Diffusion WebUI上加载的模型,是在Stable Diffusion 基座模型基础上,为了获得在某种风格上的更高质量的生成效果,而进行再次训练后产生的模型。目前Stable Diffusion 1.5版本是社区内最盛行的基座模型。安装sd web-ui的安装请参考:https:/ web-ui使用了gradio组件包,gradio在配置share=True时,会创建frpc隧道并链接到aws,详情可参考(https:/www.gradio.app/guides/sharing-your-app),因此在sd web

320、-ui应用启动时,请根据自身安全生产或隐私保护要求,考虑是否禁止开启share=True配置,或删除frpc客户端。模型https:/ web-ui的使用。sd模型训练方法主要分为四类:Dreambooth,LoRA,Textual Inversion,Hypernetwork。1.Dreambooth:在sd基座模型的基础上,通过 Dreambooth 训练方式得到的大模型,是一个完整的新模型,训练速度较慢,生成模型文件较大,一般几个G,模型文件格式为 safetensors 或 ckpt。特点是出图效果好,在某些艺术风格上有明显的提升。如下图所示,sd web-ui中该类模型可以在这里进行

321、选择。01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版2132.LoRA:一种轻量化的模型微调训练方法,在原有大模型的基础上对该模型进行微调,用于输出固定特征的人或事物。特点是对于特定风格的图产出效果好,训练速度快,模型文件小,一般几十到一百多 MB,不能独立使用,需要搭配原有大模型一起使用。sd web-ui提供了lora模型插件,以及使用lora模型的方式,具体操作可见本文的 操作流程-lora模型。3.Textual Inversion:一种使用文本提示和对应的风格图片来微调训练模型的方法,文本提示一般为特殊的单词,模型训练完成后,可以在text prompts中使用

322、这些单词,来实现对模型生成图片风格和细节的控制,需要搭配原有的大模型一起使用。4.Hypernetwork:与LoRA类似的微调训练大模型的方法,需要搭配原有的大模型一起使用操作流程prompt推导1.在sd中上传一张图片2.反向推导关键词,有两个模型CLIP和DeepBooru,以图1为例:图1:iphone 14 pro max 原相机拍摄的高清照片01年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版214使用CLIP进行prompt反推的结果:a baby is laying on a blanket surrounded by balloons and balls in

323、 the air and a cake with a name on it,Bian Jingzhao,phuoc quan,a colorized photo,dada使用DeepBooru进行prompt反推的结果:1boy,ball,balloon,bubble_blowing,chewing_gum,hat,holding_balloon,male_focus,military,military_uniform,open_mouth,orb,solo,uniform,yin_yangCLIP反推结果是一个句子,DeepBooru的反推结果是关键词。可以修改正向prompt,也可以添加反

324、向prompt,反向prompt用于限制模型在生产图片时不添加反向prompt中出现的元素。反向prompt不是必须的,可以不填。prompt推导1.在sd中上传一张图片2.反向推导关键词,有两个模型CLIP和DeepBooru,以图1为例:方法一安装additional-network插件,插件的github地址:https:/ Words。下图中选中的lora模型为blinndbox_v1_mix,trigger words为full body,chibi,每个lora模型有自己独有的Trigger Words,在模型的简介中会注明。*/stable-diffusion-webui/ext

325、ensions/sd-webui-additional-networks/models/lora101年度精选技术栈内容AIGC与大模型篇如果插件在点击安装后没有反应,或者提示因为Flag引起的错误,是因为webui启动时允许扩展插件的设置配置为禁止,需要在webui启动时添加启动参数:-enable-insecure-extension-access方法二不使用additional-network插件,使用sd-webui默认支持的lora模型使用方式,需要将lora模型放到目录下,重新启动sd-webui即可自动载入模型。在正向提示词中加入lora模型启用语句,生产图片时即可触发lora模

326、型:web-ui提供了自动填充lora提示语句的功能,点击如图所示的图标,可以打开lora模型列表,然后点击模型区域,语句会自动填充到正向提示词区域:./webui.sh-xformers-enable-insecure-extension-access1*/stable-diffusion-webui/models/Lora101年度精选技术栈内容AIGC与大模型篇技术人的百宝黑皮书2023版215以上两种方式,选用其中任意一种均能使lora模型在内容生产中生效,两种方式同时使用也不会引起问题。ControlNetcontrolNet通过支持额外的输入条件,试图控制预训练的大模型,如Stab

327、le Diffusion。单纯的文本控制方式令内容的生产就像碰运气抽卡,结果无法控制且不容易达到预期效果,controlNet的出现使stable diffusion大模型的内容生成进入可控时期,让创作变得可控使得AIGC在工业应用上更进一步。安装controlNet在sd-webui上,点击扩展,进入插件安装页面,找到controlNet插件,点击install即可完成插件安装。下载开源的controlnet模型下载地址:https:/huggingface.co/lllyasviel/ControlNet-v1-1/tree/main?一个模型由两个文件组成:.pth 和.yaml,需要同

328、时下载。文件名中V11后面的字母,p:表示可以使用,e:表示还在试验中,u:表示未完成。下载好的模型放在如下目录,重启sd-webui 即可完成controlnet模型加载。*stable-diffusion-webuiextensionssd-webui-controlnetmodels1技术人的百宝黑皮书2023版21601年度精选技术栈内容AIGC与大模型篇图生图示例模型选择1、stable diffusion大模型选用:revAnimated_v11(https:/ a4、源图片使用 图1,使用DeepBooru模型进行正向prompts生成,添加revAnimated_v11的特定p

329、rompts,删除一些正向prompts,添加反向prompts,最后使用的prompt如下所示。正向:(masterpiece),(best quality),(full body:1.2),(beautiful detailed eyes),1boy,hat,male,open_mouth,smile,cloud,solo,full body,chibi,military_uniform,反向:(low quality:1.3),(worst quality:1.3)生成的图片为:图1:原图片图2:sd生成图片技术人的百宝黑皮书2023版21701年度精选技术栈内容AIGC与大模型篇5、保

330、持生成图片的条件不变,添加ControlNet模型,选择Openpose,control mode选择 balance,生成的图片如下所示,生成的人物动作因为Openpose的作用被约束了,与原图像保持的更为相似。文生图示例模型选择1.stable diffusion大模型选用:revAnimated_v11(https:/ a示例1提示词正向:反向:(low quality:1.3),(worst quality:1.3)图3:sd生成图片(添加openpose)图4:openpose生成的图片(masterpiece),(best quality),(ultra-detailed),(fu

331、ll body:1.2),1girl,youth,dynamic,smile,palace,tang dynasty,shirt,long hair,blurry,black hair,blush stickers,black hair,(beautiful detailed face),(beautiful detailed eyes),full body,chibi技术人的百宝黑皮书2023版21801年度精选技术栈内容AIGC与大模型篇生成的图片为:示例2提示词正向:反向:(low quality:1.3),(worst quality:1.3)生成图片为:(masterpiece),(

332、best quality),(ultra-detailed),(full body:1.2),1girl,chibi,sex,smile,open mouth,flower,outdoors,beret,jk,blush,tree,:3,shirt,short hair,cherry blossoms,blurry,brown hair,blush stickers,long sleeves,bangs,black hair,pink flower,(beautiful detailed face),(beautiful detailed eyes),图5:文生图实例1图6:文生图实例2技术人

333、的百宝黑皮书2023版21901年度精选技术栈内容AIGC与大模型篇提示词解析1.(masterpiece),(best quality),(ultra-detailed),(full body:1.2),(beautiful detailed face),(beautiful detailed eyes)这些带()的词为revAnimated_v11 模型配套prompts,用于提高图片的生成质量。2.是触发 blind_box_v1_mix 模型的 prompt。3.full body,chibi 为 blind_box_v1_mix 模型的 trigger words。4.剩下的prompts为图片内容的描述。5.revAnimated_v11 模型对prompt的顺序是敏感的,排在前面的提示词比排在后面的prompt对结果的影响更大。VAE在sd的实际使用中,vae模型起到滤镜和微

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(大淘宝技术:2023技术人的百宝黑皮书(1154页).pdf)为本站 (小小) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部