Buckets:
| import"../chunks/DsnmJJEf.js";import{i as N,h as Q,C as v,H as r,a as l,b as F,E as A,s as S}from"../chunks/DdZvggmf.js";import{p as Y,o as k,s as a,f as p,a as s,b as L,c,n as q}from"../chunks/BbekZcyp.js";import{H as h}from"../chunks/BcnRgdDK.js";const z='{"title":"LoRA 低秩适配","local":"lora-低秩适配","sections":[{"title":"脚本参数","local":"脚本参数","sections":[],"depth":2},{"title":"训练脚本实现","local":"训练脚本实现","sections":[],"depth":2},{"title":"启动训练","local":"启动训练","sections":[],"depth":2},{"title":"后续步骤","local":"后续步骤","sections":[],"depth":2}],"depth":1}';var H=c('<meta name="hf:doc:metadata"/>'),G=c("<!> <!>",1),D=c('<p>Diffusers使用<a href="https://hf.co/docs/peft" rel="nofollow">PEFT</a>库的<code>LoraConfig</code>配置LoRA适配器参数,包括秩(rank)、alpha值以及目标模块。适配器被注入UNet后,通过<code>lora_layers</code>筛选出需要优化的LoRA层。</p> <!>',1),$=c('<p>当需要微调文本编码器时(如SDXL模型),Diffusers同样支持通过<a href="https://hf.co/docs/peft" rel="nofollow">PEFT</a>库实现。<code>LoraConfig</code>配置适配器参数后注入文本编码器,并筛选LoRA层进行训练。</p> <!>',1),P=c('<p></p> <!> <!> <blockquote class="warning"><p>当前功能处于实验阶段,API可能在未来版本中变更。</p></blockquote> <p><a href="https://hf.co/papers/2106.09685" rel="nofollow">LoRA(大语言模型的低秩适配)</a> 是一种轻量级训练技术,能显著减少可训练参数量。其原理是通过向模型注入少量新权重参数,仅训练这些新增参数。这使得LoRA训练速度更快、内存效率更高,并生成更小的模型权重文件(通常仅数百MB),便于存储和分享。LoRA还可与DreamBooth等其他训练技术结合以加速训练过程。</p> <blockquote class="tip"><p>LoRA具有高度通用性,目前已支持以下应用场景:<a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/train_dreambooth_lora.py" rel="nofollow">DreamBooth</a>、<a href="https://github.com/huggingface/diffusers/blob/main/examples/kandinsky2_2/text_to_image/train_text_to_image_lora_decoder.py" rel="nofollow">Kandinsky 2.2</a>、<a href="https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora_sdxl.py" rel="nofollow">Stable Diffusion XL</a>、<a href="https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py" rel="nofollow">文生图</a>以及<a href="https://github.com/huggingface/diffusers/blob/main/examples/wuerstchen/text_to_image/train_text_to_image_lora_prior.py" rel="nofollow">Wuerstchen</a>。</p></blockquote> <p>本指南将通过解析<a href="https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py" rel="nofollow">train_text_to_image_lora.py</a>脚本,帮助您深入理解其工作原理,并掌握如何针对具体需求进行定制化修改。</p> <p>运行脚本前,请确保从源码安装库:</p> <!> <p>进入包含训练脚本的示例目录,并安装所需依赖:</p> <!> <blockquote class="tip"><p>🤗 Accelerate是一个支持多GPU/TPU训练和混合精度计算的库,它能根据硬件环境自动配置训练方案。参阅🤗 Accelerate<a href="https://huggingface.co/docs/accelerate/quicktour" rel="nofollow">快速入门</a>了解更多。</p></blockquote> <p>初始化🤗 Accelerate环境:</p> <!> <p>若要创建默认配置环境(不进行交互式设置):</p> <!> <p>若在非交互环境(如Jupyter notebook)中使用:</p> <!> <p>如需训练自定义数据集,请参考<a href="create_dataset">创建训练数据集指南</a>了解数据准备流程。</p> <blockquote class="tip"><p>以下章节重点解析训练脚本中与LoRA相关的核心部分,但不会涵盖所有实现细节。如需完整理解,建议直接阅读<a href="https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py" rel="nofollow">脚本源码</a>,如有疑问欢迎反馈。</p></blockquote> <!> <p>训练脚本提供众多参数用于定制训练过程。所有参数及其说明均定义在<a href="https://github.com/huggingface/diffusers/blob/dd9a5caf61f04d11c0fa9f3947b69ab0010c9a0f/examples/text_to_image/train_text_to_image_lora.py#L85" rel="nofollow"><code>parse_args()</code></a>函数中。多数参数设有默认值,您也可以通过命令行参数覆盖:</p> <p>例如增加训练轮次:</p> <!> <p>基础参数说明可参考<a href="text2image#script-parameters">文生图训练指南</a>,此处重点介绍LoRA相关参数:</p> <ul><li><code>--rank</code>:低秩矩阵的内部维度,数值越高可训练参数越多</li> <li><code>--learning_rate</code>:默认学习率为1e-4,但使用LoRA时可适当提高</li></ul> <!> <p>数据集预处理和训练循环逻辑位于<a href="https://github.com/huggingface/diffusers/blob/dd9a5caf61f04d11c0fa9f3947b69ab0010c9a0f/examples/text_to_image/train_text_to_image_lora.py#L371" rel="nofollow"><code>main()</code></a>函数,如需定制训练流程,可在此处进行修改。</p> <p>与参数说明类似,训练流程的完整解析请参考<a href="text2image#training-script">文生图指南</a>,下文重点介绍LoRA相关实现。</p> <!> <p><a href="https://github.com/huggingface/diffusers/blob/e4b8f173b97731686e290b2eb98e7f5df2b1b322/examples/text_to_image/train_text_to_image_lora.py#L529" rel="nofollow">优化器</a>仅对<code>lora_layers</code>参数进行优化:</p> <!> <p>除LoRA层设置外,该训练脚本与标准train_text_to_image.py基本相同!</p> <!> <p>完成所有配置后,即可启动训练脚本!🚀</p> <p>以下示例使用<a href="https://huggingface.co/datasets/lambdalabs/naruto-blip-captions" rel="nofollow">Naruto BLIP captions</a>训练生成火影角色。请设置环境变量<code>MODEL_NAME</code>和<code>DATASET_NAME</code>指定基础模型和数据集,<code>OUTPUT_DIR</code>设置输出目录,<code>HUB_MODEL_ID</code>指定Hub存储库名称。脚本运行后将生成以下文件:</p> <ul><li>模型检查点</li> <li><code>pytorch_lora_weights.safetensors</code>(训练好的LoRA权重)</li></ul> <p>多GPU训练请添加<code>--multi_gpu</code>参数。</p> <blockquote class="warning"><p>在11GB显存的2080 Ti显卡上完整训练约需5小时。</p></blockquote> <!> <p>训练完成后,您可以通过以下方式进行推理:</p> <!> <!> <p>恭喜完成LoRA模型训练!如需进一步了解模型使用方法,可参考以下指南:</p> <ul><li>学习如何加载<a href="../using-diffusers/loading_adapters#LoRA">不同格式的LoRA权重</a>(如Kohya或TheLastBen训练的模型)</li> <li>掌握使用PEFT进行<a href="../tutorials/using_peft_for_inference">多LoRA组合推理</a>的技巧</li></ul> <!> <p></p>',1);function ta(B,E){Y(E,!1),k(()=>{new URLSearchParams(window.location.search).get("fw")}),N();var u=P();Q("1b9mnc8",e=>{var d=H();S(d,"content",z),s(e,d)});var U=a(p(u),2);v(U,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var m=a(U,2);r(m,{title:"LoRA 低秩适配",local:"lora-低秩适配",headingTag:"h1"});var f=a(m,12);l(f,{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZodWdnaW5nZmFjZSUyRmRpZmZ1c2VycyUwQWNkJTIwZGlmZnVzZXJzJTBBcGlwJTIwaW5zdGFsbCUyMC4=",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/huggingface/diffusers | |
| <span class="hljs-built_in">cd</span> diffusers | |
| pip install .`,lang:"bash",wrap:!1});var b=a(f,4);F(b,{id:"installation",options:["PyTorch","Flax"],children:(e,d)=>{var o=G(),n=p(o);h(n,{id:"installation",option:"PyTorch",children:(t,M)=>{l(t,{code:"Y2QlMjBleGFtcGxlcyUyRnRleHRfdG9faW1hZ2UlMEFwaXAlMjBpbnN0YWxsJTIwLXIlMjByZXF1aXJlbWVudHMudHh0",highlighted:`<span class="hljs-built_in">cd</span> examples/text_to_image | |
| pip install -r requirements.txt`,lang:"bash",wrap:!1})},$$slots:{default:!0}});var y=a(n,2);h(y,{id:"installation",option:"Flax",children:(t,M)=>{l(t,{code:"Y2QlMjBleGFtcGxlcyUyRnRleHRfdG9faW1hZ2UlMEFwaXAlMjBpbnN0YWxsJTIwLXIlMjByZXF1aXJlbWVudHNfZmxheC50eHQ=",highlighted:`<span class="hljs-built_in">cd</span> examples/text_to_image | |
| pip install -r requirements_flax.txt`,lang:"bash",wrap:!1})},$$slots:{default:!0}}),s(e,o)},$$slots:{default:!0}});var g=a(b,6);l(g,{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZw==",highlighted:"accelerate config",lang:"bash",wrap:!1});var J=a(g,4);l(J,{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZyUyMGRlZmF1bHQ=",highlighted:"accelerate config default",lang:"bash",wrap:!1});var w=a(J,4);l(w,{code:"ZnJvbSUyMGFjY2VsZXJhdGUudXRpbHMlMjBpbXBvcnQlMjB3cml0ZV9iYXNpY19jb25maWclMEElMEF3cml0ZV9iYXNpY19jb25maWcoKQ==",highlighted:`<span class="hljs-keyword">from</span> accelerate.utils <span class="hljs-keyword">import</span> write_basic_config | |
| write_basic_config()`,lang:"py",wrap:!1});var j=a(w,6);r(j,{title:"脚本参数",local:"脚本参数",headingTag:"h2"});var T=a(j,6);l(T,{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMHRyYWluX3RleHRfdG9faW1hZ2VfbG9yYS5weSUyMCU1QyUwQSUyMCUyMC0tbnVtX3RyYWluX2Vwb2NocyUzRDE1MCUyMCU1Qw==",highlighted:`accelerate launch train_text_to_image_lora.py \\ | |
| --num_train_epochs=150 \\`,lang:"bash",wrap:!1});var Z=a(T,6);r(Z,{title:"训练脚本实现",local:"训练脚本实现",headingTag:"h2"});var R=a(Z,6);F(R,{id:"lora",options:["UNet","text encoder"],children:(e,d)=>{var o=G(),n=p(o);h(n,{id:"lora",option:"UNet",children:(t,M)=>{var i=D(),_=a(p(i),2);l(_,{code:"dW5ldF9sb3JhX2NvbmZpZyUyMCUzRCUyMExvcmFDb25maWcoJTBBJTIwJTIwJTIwJTIwciUzRGFyZ3MucmFuayUyQyUwQSUyMCUyMCUyMCUyMGxvcmFfYWxwaGElM0RhcmdzLnJhbmslMkMlMEElMjAlMjAlMjAlMjBpbml0X2xvcmFfd2VpZ2h0cyUzRCUyMmdhdXNzaWFuJTIyJTJDJTBBJTIwJTIwJTIwJTIwdGFyZ2V0X21vZHVsZXMlM0QlNUIlMjJ0b19rJTIyJTJDJTIwJTIydG9fcSUyMiUyQyUyMCUyMnRvX3YlMjIlMkMlMjAlMjJ0b19vdXQuMCUyMiU1RCUyQyUwQSklMEElMEF1bmV0LmFkZF9hZGFwdGVyKHVuZXRfbG9yYV9jb25maWcpJTBBbG9yYV9sYXllcnMlMjAlM0QlMjBmaWx0ZXIobGFtYmRhJTIwcCUzQSUyMHAucmVxdWlyZXNfZ3JhZCUyQyUyMHVuZXQucGFyYW1ldGVycygpKQ==",highlighted:`unet_lora_config = LoraConfig( | |
| r=args.rank, | |
| lora_alpha=args.rank, | |
| init_lora_weights=<span class="hljs-string">"gaussian"</span>, | |
| target_modules=[<span class="hljs-string">"to_k"</span>, <span class="hljs-string">"to_q"</span>, <span class="hljs-string">"to_v"</span>, <span class="hljs-string">"to_out.0"</span>], | |
| ) | |
| unet.add_adapter(unet_lora_config) | |
| lora_layers = <span class="hljs-built_in">filter</span>(<span class="hljs-keyword">lambda</span> p: p.requires_grad, unet.parameters())`,lang:"py",wrap:!1}),s(t,i)},$$slots:{default:!0}});var y=a(n,2);h(y,{id:"lora",option:"text encoder",children:(t,M)=>{var i=$(),_=a(p(i),2);l(_,{code:"dGV4dF9sb3JhX2NvbmZpZyUyMCUzRCUyMExvcmFDb25maWcoJTBBJTIwJTIwJTIwJTIwciUzRGFyZ3MucmFuayUyQyUwQSUyMCUyMCUyMCUyMGxvcmFfYWxwaGElM0RhcmdzLnJhbmslMkMlMEElMjAlMjAlMjAlMjBpbml0X2xvcmFfd2VpZ2h0cyUzRCUyMmdhdXNzaWFuJTIyJTJDJTBBJTIwJTIwJTIwJTIwdGFyZ2V0X21vZHVsZXMlM0QlNUIlMjJxX3Byb2olMjIlMkMlMjAlMjJrX3Byb2olMjIlMkMlMjAlMjJ2X3Byb2olMjIlMkMlMjAlMjJvdXRfcHJvaiUyMiU1RCUyQyUwQSklMEElMEF0ZXh0X2VuY29kZXJfb25lLmFkZF9hZGFwdGVyKHRleHRfbG9yYV9jb25maWcpJTBBdGV4dF9lbmNvZGVyX3R3by5hZGRfYWRhcHRlcih0ZXh0X2xvcmFfY29uZmlnKSUwQXRleHRfbG9yYV9wYXJhbWV0ZXJzX29uZSUyMCUzRCUyMGxpc3QoZmlsdGVyKGxhbWJkYSUyMHAlM0ElMjBwLnJlcXVpcmVzX2dyYWQlMkMlMjB0ZXh0X2VuY29kZXJfb25lLnBhcmFtZXRlcnMoKSkpJTBBdGV4dF9sb3JhX3BhcmFtZXRlcnNfdHdvJTIwJTNEJTIwbGlzdChmaWx0ZXIobGFtYmRhJTIwcCUzQSUyMHAucmVxdWlyZXNfZ3JhZCUyQyUyMHRleHRfZW5jb2Rlcl90d28ucGFyYW1ldGVycygpKSk=",highlighted:`text_lora_config = LoraConfig( | |
| r=args.rank, | |
| lora_alpha=args.rank, | |
| init_lora_weights=<span class="hljs-string">"gaussian"</span>, | |
| target_modules=[<span class="hljs-string">"q_proj"</span>, <span class="hljs-string">"k_proj"</span>, <span class="hljs-string">"v_proj"</span>, <span class="hljs-string">"out_proj"</span>], | |
| ) | |
| text_encoder_one.add_adapter(text_lora_config) | |
| text_encoder_two.add_adapter(text_lora_config) | |
| text_lora_parameters_one = <span class="hljs-built_in">list</span>(<span class="hljs-built_in">filter</span>(<span class="hljs-keyword">lambda</span> p: p.requires_grad, text_encoder_one.parameters())) | |
| text_lora_parameters_two = <span class="hljs-built_in">list</span>(<span class="hljs-built_in">filter</span>(<span class="hljs-keyword">lambda</span> p: p.requires_grad, text_encoder_two.parameters()))`,lang:"py",wrap:!1}),s(t,i)},$$slots:{default:!0}}),s(e,o)},$$slots:{default:!0}});var X=a(R,4);l(X,{code:"b3B0aW1pemVyJTIwJTNEJTIwb3B0aW1pemVyX2NscyglMEElMjAlMjAlMjAlMjBsb3JhX2xheWVycyUyQyUwQSUyMCUyMCUyMCUyMGxyJTNEYXJncy5sZWFybmluZ19yYXRlJTJDJTBBJTIwJTIwJTIwJTIwYmV0YXMlM0QoYXJncy5hZGFtX2JldGExJTJDJTIwYXJncy5hZGFtX2JldGEyKSUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheSUzRGFyZ3MuYWRhbV93ZWlnaHRfZGVjYXklMkMlMEElMjAlMjAlMjAlMjBlcHMlM0RhcmdzLmFkYW1fZXBzaWxvbiUyQyUwQSk=",highlighted:`optimizer = optimizer_cls( | |
| lora_layers, | |
| lr=args.learning_rate, | |
| betas=(args.adam_beta1, args.adam_beta2), | |
| weight_decay=args.adam_weight_decay, | |
| eps=args.adam_epsilon, | |
| )`,lang:"py",wrap:!1});var x=a(X,4);r(x,{title:"启动训练",local:"启动训练",headingTag:"h2"});var V=a(x,12);l(V,{code:"ZXhwb3J0JTIwTU9ERUxfTkFNRSUzRCUyMnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUwQWV4cG9ydCUyME9VVFBVVF9ESVIlM0QlMjIlMkZzZGRhdGElMkZmaW5ldHVuZSUyRmxvcmElMkZuYXJ1dG8lMjIlMEFleHBvcnQlMjBIVUJfTU9ERUxfSUQlM0QlMjJuYXJ1dG8tbG9yYSUyMiUwQWV4cG9ydCUyMERBVEFTRVRfTkFNRSUzRCUyMmxhbWJkYWxhYnMlMkZuYXJ1dG8tYmxpcC1jYXB0aW9ucyUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjAtLW1peGVkX3ByZWNpc2lvbiUzRCUyMmZwMTYlMjIlMjAlMjB0cmFpbl90ZXh0X3RvX2ltYWdlX2xvcmEucHklMjAlNUMlMEElMjAlMjAtLXByZXRyYWluZWRfbW9kZWxfbmFtZV9vcl9wYXRoJTNEJTI0TU9ERUxfTkFNRSUyMCU1QyUwQSUyMCUyMC0tZGF0YXNldF9uYW1lJTNEJTI0REFUQVNFVF9OQU1FJTIwJTVDJTBBJTIwJTIwLS1kYXRhbG9hZGVyX251bV93b3JrZXJzJTNEOCUyMCU1QyUwQSUyMCUyMC0tcmVzb2x1dGlvbiUzRDUxMiUyMCU1QyUwQSUyMCUyMC0tY2VudGVyX2Nyb3AlMjAlNUMlMEElMjAlMjAtLXJhbmRvbV9mbGlwJTIwJTVDJTBBJTIwJTIwLS10cmFpbl9iYXRjaF9zaXplJTNEMSUyMCU1QyUwQSUyMCUyMC0tZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNENCUyMCU1QyUwQSUyMCUyMC0tbWF4X3RyYWluX3N0ZXBzJTNEMTUwMDAlMjAlNUMlMEElMjAlMjAtLWxlYXJuaW5nX3JhdGUlM0QxZS0wNCUyMCU1QyUwQSUyMCUyMC0tbWF4X2dyYWRfbm9ybSUzRDElMjAlNUMlMEElMjAlMjAtLWxyX3NjaGVkdWxlciUzRCUyMmNvc2luZSUyMiUyMCU1QyUwQSUyMCUyMC0tbHJfd2FybXVwX3N0ZXBzJTNEMCUyMCU1QyUwQSUyMCUyMC0tb3V0cHV0X2RpciUzRCUyNCU3Qk9VVFBVVF9ESVIlN0QlMjAlNUMlMEElMjAlMjAtLXB1c2hfdG9faHViJTIwJTVDJTBBJTIwJTIwLS1odWJfbW9kZWxfaWQlM0QlMjQlN0JIVUJfTU9ERUxfSUQlN0QlMjAlNUMlMEElMjAlMjAtLXJlcG9ydF90byUzRHdhbmRiJTIwJTVDJTBBJTIwJTIwLS1jaGVja3BvaW50aW5nX3N0ZXBzJTNENTAwJTIwJTVDJTBBJTIwJTIwLS12YWxpZGF0aW9uX3Byb21wdCUzRCUyMiVFOCU5MyU5RCVFOCU4OSVCMiVFNyU5QyVCQyVFNyU5RCU5QiVFNyU5QSU4NCVFNyU4MSVBQiVFNSVCRCVCMSVFNSVCRiU4RCVFOCU4MCU4NSVFOCVBNyU5MiVFOCU4OSVCMiUyMiUyMCU1QyUwQSUyMCUyMC0tc2VlZCUzRDEzMzc=",highlighted:`<span class="hljs-built_in">export</span> MODEL_NAME=<span class="hljs-string">"stable-diffusion-v1-5/stable-diffusion-v1-5"</span> | |
| <span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">"/sddata/finetune/lora/naruto"</span> | |
| <span class="hljs-built_in">export</span> HUB_MODEL_ID=<span class="hljs-string">"naruto-lora"</span> | |
| <span class="hljs-built_in">export</span> DATASET_NAME=<span class="hljs-string">"lambdalabs/naruto-blip-captions"</span> | |
| accelerate launch --mixed_precision=<span class="hljs-string">"fp16"</span> train_text_to_image_lora.py \\ | |
| --pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_NAME</span> \\ | |
| --dataset_name=<span class="hljs-variable">$DATASET_NAME</span> \\ | |
| --dataloader_num_workers=8 \\ | |
| --resolution=512 \\ | |
| --center_crop \\ | |
| --random_flip \\ | |
| --train_batch_size=1 \\ | |
| --gradient_accumulation_steps=4 \\ | |
| --max_train_steps=15000 \\ | |
| --learning_rate=1e-04 \\ | |
| --max_grad_norm=1 \\ | |
| --lr_scheduler=<span class="hljs-string">"cosine"</span> \\ | |
| --lr_warmup_steps=0 \\ | |
| --output_dir=<span class="hljs-variable">\${OUTPUT_DIR}</span> \\ | |
| --push_to_hub \\ | |
| --hub_model_id=<span class="hljs-variable">\${HUB_MODEL_ID}</span> \\ | |
| --report_to=wandb \\ | |
| --checkpointing_steps=500 \\ | |
| --validation_prompt=<span class="hljs-string">"蓝色眼睛的火影忍者角色"</span> \\ | |
| --seed=1337`,lang:"bash",wrap:!1});var C=a(V,4);l(C,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmxvYWRfbG9yYV93ZWlnaHRzKCUyMnBhdGglMkZ0byUyRmxvcmElMkZtb2RlbCUyMiUyQyUyMHdlaWdodF9uYW1lJTNEJTIycHl0b3JjaF9sb3JhX3dlaWdodHMuc2FmZXRlbnNvcnMlMjIpJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZSglMjJBJTIwbmFydXRvJTIwd2l0aCUyMGJsdWUlMjBleWVzJTIyKS5pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image | |
| <span class="hljs-keyword">import</span> torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">"stable-diffusion-v1-5/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16).to(<span class="hljs-string">"cuda"</span>) | |
| pipeline.load_lora_weights(<span class="hljs-string">"path/to/lora/model"</span>, weight_name=<span class="hljs-string">"pytorch_lora_weights.safetensors"</span>) | |
| image = pipeline(<span class="hljs-string">"A naruto with blue eyes"</span>).images[<span class="hljs-number">0</span>]`,lang:"py",wrap:!1});var W=a(C,2);r(W,{title:"后续步骤",local:"后续步骤",headingTag:"h2"});var I=a(W,6);A(I,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/training/lora.md"}),q(2),s(B,u),L()}export{ta as component}; | |
Xet Storage Details
- Size:
- 18.1 kB
- Xet hash:
- 087551e147d2f7a4a13f34a22667656f051c6d22e67994ff2007ecf44cf524b3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.