皮皮网
皮皮网

【炒股公式源码大全】【inux内核源码讲解】【韩国传奇引擎源码】lora源码解释

来源:毁灭战士源码解析 发表时间:2024-11-30 01:04:35

1.腾讯T2I-adapter源码分析(1)-运行源码跑训练
2.LoRa、源码Sigfox、解释Cellular这三种通信技术你pick哪个?
3.LoRaWAN网关搭建
4.物联网Lora技术应用有哪些?Lora无线通讯模块有什么优缺点?
5.中文LLaMA&Alpaca大语言模型词表扩充+预训练+指令精调
6.GitHub Copilot使用攻略

lora源码解释

腾讯T2I-adapter源码分析(1)-运行源码跑训练

       稳定扩散、源码midjourney等AI绘图技术,解释为人们带来了令人惊叹的源码效果,不禁让人感叹技术发展的解释炒股公式源码大全日新月异。然而,源码AI绘图的解释可控性一直不是很好,通过prompt描述词来操控图像很难做到随心所欲。源码为了使AI绘制的解释图像更具可控性,Controlnet、源码T2I-adapter等技术应运而生。解释本系列文章将从T2I-adapter的源码源码出发,分析其实现方法。解释

       本篇是源码第一篇,主要介绍源码的运行方法,后续两篇将以深度图为例,分别分析推理部分和训练部分的代码。分析T2I-Adapter,也是为了继续研究我一直在研究的课题:“AI生成同一人物不同动作”,例如:罗培羽:stable-diffusion生成同一人物不同动作的尝试(多姿势图),Controlnet、T2I-adapter给了我一些灵感,后续将进行尝试。

       T2I-Adapter论文地址如下,它与controlnet类似,都是在原模型增加一个旁路,然后对推理结果求和。

       T2I-Adapter和controlnet有两个主要的不同点,从图中可见,其一是在unet的编码阶段增加参数,而controlnet主要是解码阶段;其二是controlnet复制unit的上半部结构,而T2I-Adapter使用不同的模型结构。由于采用较小的模型,因此T2I-Adapter的模型较小,默认下占用M左右,而controlnet模型一般要5G空间。

       首先确保机器上装有3.6版本以上python,然后把代码clone下来。随后安装依赖项,打开requirements.txt,可以看到依赖项的内容。然后下载示例,下载的会放到examples目录下。接着下载sd模型到model目录下,再下载T2I-Adapter的模型到目录下,模型可以按需到huggingface.co/TencentA...下载。这里我下载了depth和openpose。sd模型除了上述的v1-5,也还下载了sd-v1-4.ckpt。

       根据文档,尝试运行一个由深度图生成的例子,下图的左侧是深度图,提示语是"desk, best quality, extremely detailed",右侧是生成出来的。运行过程比较艰辛,一开始在一台8G显存的服务器上跑,显存不够;重新搭环境在一台G显存的服务器上跑,还是不够;最后用一台G显存的服务器,终于运行起来了。

       接下来尝试跑openpose的例子,下图左侧是骨架图,提示词为"Iron man, high-quality, high-res",右侧是生成的图像。

       既然能跑推理,那么尝试跑训练。为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行train_depth.py。

       显然,inux内核源码讲解习惯了,会有一些问题没法直接运行,需要先做两步工作。准备训练数据,分析代码,定位到ldm/data/dataset_depth.py,反推它的数据集结构,然后准备对应数据。先创建文件datasets/laion_depth_meta_v1.txt,用于存放数据文件的地址,由于只是测试,我就只添加两行。然后准备,图中的.png和.png是结果图,.depth.png和.depth.png是深度图,.txt和.txt是对应的文本描述。

       文本描述如下,都只是为了把代码跑起来而做的简单设置。设置环境变量,由于T2I-Adapter使用多卡训练,显然我也没这个环境,因此要让它在单机上跑。而代码中也会获取一些环境变量,因此做简单的设置。

       做好准备工作,可以运行程序了,出于硬件条件限制,只能把batch size设置为1。在A显卡跑了约8小时,完成,按默认的配置,模型保存experiments/train_depth/models/model_ad_.pth。那么,使用训练出来的模型试试效果,能生成如下(此处只是为了跑起来代码,用训练集来测试),验证了可以跑起来。

       运行起来,但这还不够,我们还得看看代码是怎么写法,下一篇见。

       PS:《直观理解AI博弈原理》是笔者写的一篇长文,从五子棋、象棋、围棋的AI演进讲起,从深度遍历、MAX-MIN剪枝再到蒙特卡罗树搜索,一步步介绍AI博弈的原理,而后引出强化学习方法,通俗易懂地介绍AlphaGo围棋、星际争霸强化学习AI、王者荣耀AI的一些强化学习要点,值得推荐。

       AUTOMATIC的webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。

LoRa、Sigfox、Cellular这三种通信技术你pick哪个?

       探讨LoRa、Sigfox、Cellular三种通信技术的优劣,了解它们在物联网领域的应用。

       现代家庭与城市中,WiFi与蓝牙已成为物联网设备的常见连接方式。然而,它们的局限性在于短程覆盖范围,无法有效提供“最后一英里”的网络覆盖。因此,针对远程应用的韩国传奇引擎源码覆盖问题,三种技术逐渐受到重视。

       首先,LoRa(低功率广域网)设计用于远距离、低比特率通信,适合远程传感器等应用。其工作频率低于1GHz,使用直接序列扩频技术,拥有比WiFi更长的覆盖范围,且干扰较少。LoRa在欧洲的运行频率为-MHz,在美国则为MHz。尽管LoRa是封闭源代码,但用户可以自行建立个人网络。

       其次,Sigfox作为一家法国公司,专注于构建远程、低功耗物联网无线网络。其运行频率在欧洲约为MHz,在美国为MHz。Sigfox采用“超窄带”技术,通信带宽仅为Hz。在有效负载中,上传最多可包含个字节,下载则最多8个字节。与LoRa不同,Sigfox不提供私人基站供个人使用,可能在某些地区无法提供服务。

       最后,Cellular技术是一种无线通信技术,通过将地理区域划分为多个小区(蜂窝),充分利用有限的无线传输频率。蜂窝系统将地理区域分割,每个小区分配一定数量的频率,支持更多设备与更低数据速率。常见的蜂窝系统包括GSM、CDMA与NB IoT,均属于第二代通信技术。每种技术都有其特定功能,旨在支持更多设备连接与更低数据传输。

       对于个人项目而言,选择合适的通信技术至关重要。WiFi、LoRa、Sigfox与Cellular各有优势,用户应根据具体需求做出选择。建议深入研究每种技术的特性与应用场景,以便为项目提供最合适的连接方案。最终目标是实现高效、可靠与低成本的物联网应用。

LoRaWAN网关搭建

       搭建LoRaWAN网关的方案使用南京仁珏的LoRaWAN网关开发组件M-GWS-EV。该组件以树莓派的CM3+作为主要处理器,搭载南京仁珏自研的M-GWS射频模块,集成GPS、RJ和4G模块,方便软件开发。

       M-GWS-EV的接口包括GPS、RJ和4G模块等,与CM3+的SPI0接口相连接。GPIO7连接到M-GWS的LoRa_PERST管脚,确保硬件接口的正确配置。

       搭建过程中,选择使用官方带桌面的Raspberry Pi OS作为运行系统,直接运行CM3+模块。Semtech的官方代码库sx_hal提供快速搭建网关接入LoRaWAN服务器的方案,简化了开发过程。在本地目录下获取gws源码,通过编译工程生成可执行文件,然后安装到CM3+上,执行make install_conf完成配置项的安装。

       为了解决复位问题,修改reset_lgw.sh脚本,使用Raspberry Pi OS提供的c#工程源码gpio操作工具替代,确保了启动gwstart.sh脚本的正确执行。配置global.json文件,修改server_address为自建服务器地址,完成基本配置。

       接入Chirpstack服务器,通过浏览器登录后台,选择Gateways选项,添加网关的gateway_ID,完成服务器接入。至此,LoRaWAN网关的构建和服务器接入流程全部完成。

物联网Lora技术应用有哪些?Lora无线通讯模块有什么优缺点?

       Lora无线通讯技术在物联网领域应用广泛,从共享单车到智能水电表,Lora都扮演着重要角色。Lora无线技术凭借其独特的特性,成为低功耗广域网(LPWAN)的首选方案之一。

       首先,Lora的低功耗特性是其一大优势。接收电流仅为mA,睡眠电流小于nA,这大大延长了电池的使用寿命,减少了电池供电设备的功耗。

       其次,Lora的传输距离远,与传统无线技术相比,其在低速空旷条件下的传输距离可达公里。这是因为Lora解调信号的信噪比与-dB,远高于调频制式的dB,使得其范围和距离显著扩大。

       在抗干扰能力方面,Lora采用扩频技术,通过高扩频因子提高了无线通讯的抗干扰能力。即使在同一频率下同时发送信号,也不会相互干扰。

       Lora的无线穿透力也更强,Mhz无线传输频率下的发射功率下,其穿透能力比传统ASK技术提高了5倍以上。

       关于Lora的无线通讯速率,它支持半双工通讯,速率范围从bps到5.4kbps。这足以支持无线升级设备固件,满足物联网应用的需求。

       在产品开发应用中,Lora模块为工程师提供了便利。产品开发时只需按照模块接口和文档完成设计,大大简化了产品开发流程。模块集成的无线通讯协议栈,减少了开发者需要处理的繁琐工作。

       使用Lora模块进行产品开发的优势还包括更短的开发周期和更省心的产品调试。当无线通讯出现问题时,厂家会提供支持,快速解决处理。

       然而,市面上的Lora模块通用性较强,但可能无法完全满足特定产品的尺寸、功能和接口需求。如果找到合适的模块困难,企业可以选择向模块厂家定制,或自行研发。

       针对Lora模块的开发与设计,无际单片机编程提供了全面的教程和开发板,深入解析了芯片级的开发流程,有助于节约成本。

       此外,无际单片机还分享了单片机入门到高级教程工具包,以及个热门项目源码、原理图、PCB设计和说明文档,非常适合初学者和进阶学习者。

       获取这份资料包和加入单片机交流群,可以点击下方卡片扫码免费领取,或者联系无际单片机获取更多技术支持和学习资源。文库类网站+源码

中文LLaMA&Alpaca大语言模型词表扩充+预训练+指令精调

       在探索大模型在中文场景中的应用时,我们发现LLaMA模型虽然在多语言模型中性能卓越,但原生支持中文的能力相对有限。其词表大小仅为K,远低于多语言模型如XLM-R、Bloom所使用的K词表大小,这直接导致了中文token数量过少,影响了模型在中文任务上的表现。因此,对LLaMA进行词表扩充成为了解决这一问题的关键步骤。

       为了应对这一挑战,国内开源项目Chinese-LLaMA-Alpaca提供了详细的指南,从词表扩充、模型预训练到指令精调,帮助开发者构建更加适应中文环境的LLaMA模型。整个流程涉及到环境搭建、代码、模型、数据集的准备,以及最终的模型输出和应用。

       环境搭建方面,我们使用Docker镜像进行高效、复现性好的配置。这一步骤包括下载Pytorch镜像、创建并进入容器、安装依赖库,以及从源码安装Peft库,以满足后续操作需求。

       代码、模型、数据集的准备是整个流程的核心。通过下载Chinese-LLaMA-Alpaca的官方代码,我们将原始LLaMA的权重文件转换为适应Transformers库的格式,或者直接使用已转换好的模型,如yahma/llama-7b-hf。数据集准备则涉及到从开源书籍中下载并清洗数据,以确保用于训练的资料质量。

       词表扩充是Chinese-LLaMA-Alpaca项目中的重要部分。通过在通用中文语料库上训练基于sentencepiece的K中文词表,并将其与原版LLaMA的K词表进行合并,最终得到一个包含个token的中文LLaMA词表。值得注意的是,在进行指令精调阶段时,Alpaca模型会额外引入一个pad token,使得中文Alpaca的词表大小为。因此,在将LoRA权重合并回基础模型时,需要特别注意词表大小的一致性问题。

       模型训练细节方面,整个过程分为预训练、预训练和指令精调三个阶段。预训练阶段包括两个子阶段,通过使用LoRA技术,模型不仅更新了embedding参数,同时也添加了LoRA权重,以提高训练效率。指令精调阶段则与Stanford Alpaca的格式保持一致,采用LoRA进行高效精调,并增加了可训练参数的数量。

       最后,将多个LoRA权重合并回基础模型,以及进行模型推理测试,是实现最终模型应用的步骤。尽管词表扩充+预训练+指令精调能够显著提升模型性能,但对于资源有限的开发者,选择直接使用支持中文的模型,或者进行部分词表扩充和微调,可能是更实用的方案。

GitHub Copilot使用攻略

       GitHub Copilot,借助OpenAI的大力支持,正在革新软件开发的模式。它不再仅限于提供代码建议,而是通过训练,融合自然语言与数十亿行公开源代码数据,包括来自公共GitHub存储库的代码,以深入理解项目复杂细节。这使得GitHub Copilot能为您呈现上下文感知度极高的建议。

       为了最大化GitHub Copilot的潜力,您需要掌握提示技巧。提示是您向Copilot传达所需内容的方式,代码质量很大程度上取决于提示的清晰和准确性。

       要全面利用Copilot,您需要深入了解提示工程。这是一个制定明确指示的过程,旨在指导人工智能系统(如GitHub Copilot),生成符合项目特定需求的上下文代码。这确保代码在语法、功能和上下文上都完全正确。想象一下为司机提供精确指示的过程,没有指示,旅程可能会效率低下。有了明确的指导,路径会变得直接高效,节省时间和精力。在这种情况下,您提供方向,而GitHub Copilot则是熟练的司机,随时准备在正确的指导下推动您完成编码之旅。

       理解了提示工程的基本概念后,让我们探讨一些原理和最佳实践。

       首先,让我们总结4S原则,这些核心原则为制作高效和有效的提示奠定了基础。接下来,我们将深入探讨高级最佳实践,以确保与GitHub Copilot的每次交互都得到优化。

       为了提高与Copilot的互动效率,请遵循以下基于4S的高级实践:

       确保提示清晰和具体。例如,提示“编写Python函数从给定列表中过滤和返回偶数”既聚焦单一问题,也具体明确。

       丰富上下文信息,按照“环绕”原则提供充足背景。越多上下文信息,生成的代码建议越贴合实际需求。在代码顶部添加注释,提供更多详细信息,帮助Copilot更好地理解上下文。

       保持提示简洁,遵循“短”原则。在提供详细信息与保持简短之间找到平衡,确保沟通清晰和准确。

       利用副驾驶(Copilot)的上下文理解能力,通过在代码编辑器中使用并行打开的选项卡,获取更多有关代码要求的上下文。

       利用示例澄清您的需求和期望,展示抽象概念,并使Copilot的提示更具体。

       实践迭代,释放GitHub Copilot的全部潜力。如果生成的代码不是预期结果,将其视为对话的一部分。删除建议代码,添加更多详细信息和示例,再次提示Copilot。

       了解GitHub Copilot如何学习提示,以及它实际上如何处理提示并为您推荐代码。

       GitHub Copilot利用大型语言模型(LLM)无缝编写代码,我们深入探讨LLM在Copilot中的集成和影响。

       大型语言模型(LLM)是为理解和生成人类语言而设计的AI模型。由于接触大量文本数据,这些模型具备处理涉及文本的广泛任务的能力。了解LLM的核心方面,包括训练数据量、语境理解、机器学习和人工智能集成以及多功能性。

       GitHub Copilot使用LLM提供上下文感知代码建议,不仅考虑当前文件,还考虑IDE中的其他打开文件和选项卡,以生成准确和相关的代码完成。这种动态方法确保了量身定制的建议,提高了生产力。

       通过微调LLM,我们可以为特定任务或领域定制预训练模型。而LoRA微调方法则是使大型预训练语言模型更好地用于特定任务的聪明选择,无需从头开始训练所有部分。

TensorRT-LLM(持续更新)

       TRT-LLM(NVIDIA官方支持)是一款用于在NVIDIA GPU平台上进行大模型推理部署的工具。

       其整体流程是将LLM构建为engine模型,支持多种大模型,如单机单卡、单机多卡(NCCL)、多机多卡,以及量化(8/4bit)等功能。

       TRT-LLM的runtime支持chat和stream两种模式,并支持python和cpp(可以直接使用cpp,也可以使用cpp的bybind接口)两种模式的runtime。

       构建离线模型可以通过example下的各个模型的build.py实现,而运行模型则可通过example下的run.py进行。

       TRT-LLM默认支持kv-cache,支持PagedAttention,支持flashattention,支持MHA/MQA/GQA等。

       在cpp下,TRT-LLM实现了许多llm场景下的高性能cuda kernel,并基于TensorRT的plugin机制,支持各种算子调用。

       与hugging face transformers(HF)相比,TRT-LLM在性能上提升2~3倍左右。

       TRT-LLM易用性很强,可能与其LLM模型结构比较固定有关。

       TRT-LLM的weight_only模式仅仅压缩模型体积,计算时依旧是dequant到input.dtype做计算。

       TRT-LLM的量化:W4A(表示weight为4bit,输入数据即activation为fp)。

       LLM模型推理,性能损耗大头在data 搬移,即memory bound,compute bound占比较少。

       TRT-LLM运行时内存可以通过一下参数调整,使用适合当前业务模型的参数即可。

       TRT-LLM对于Batch Manager提供了.a文件,用于支持in-flight batching of requests,来较小队列中的数据排队时间,提高GPU利用率。

       当前支持(0.7.1)的模型如下:

       tensorrt llm需要进行源码编译安装,官方提供的方式为通过docker进行安装。

       docker方式编译可以参考官方文档,此处做进一步说明。使用docker方式,会将依赖的各种编译工具和sdk都下载好,后面会详细分析一下docker的编译过程。

       编译有2种包,一种是仅包含cpp的代码包,一种是cpp+python的wheel包。

       docker的整个编译过程从如下命令开始:调用make,makefile在 docker/Makefile 下面,里面主要是调用了docker命令来进行构建。

       后续非docker方式编译llm,也是基于上述docker编译。

       一些小技巧:在编译llm过程中,会通过pip install一些python包,llm脚本中默认使用了NVIDIA的源,我们可以替换为国内的源,速度快一些。

       整个过程就是将docker file中的过程拆解出来,直接执行,不通过docker来执行。

       编译好的文件位于:build/tensorrt_llm-0.5.0-py3-none-any.whl。

       默认编译选项下的一些编译配置信息如下:

       以官方样例bloom为例:bloom example

       核心在于:编译时使用的环境信息和运行时的环境信息要一致,如:python版本,cuda/cudnn/nccl/tensorrt等。

       环境安装后以后,参考官方bloom样例,进行模型下载,样例执行即可。

       最终生成的engine模型:

       以chatglm2-6b模型为基础,进行lora微调后,对模型进行参数合并后,可以使用tensortrt-llm的example进行部署,合并后的模型的推理结果和合并前的模型的推理结果一致。

       lora的源码不在赘述,主要看一下lora模型参数是如何合并到base model中的:

       lora模型如下:

       base模型如下:

       模型构建是指将python模型构建为tensort的engine格式的模型。

       整体流程如下:

       整体流程可以总结为:

       可以看出,原理上和模型转换并没有区别,只是实现方式有差异而已。

       pytorch模型参数如何加载在tensortrt-llm中?关于量化参数加载

       1. 先提取fp格式的参数

       2. 调用cpp的实现进行参数量化

       整体而言,模型参数加载的关键在于:算子weight一一对应,拷贝复制。

       每种模型,都需要搭建和pytorch严格一致的模型架构,并将算子weight严格对应的加载到tensortrt-llm模型中

       即:关键点在于:熟悉原始pytorch模型结构和参数保存方式,熟悉tensorrt-llm的模型结构和参数设定方法。

       模型构建成功后,有两个文件:config.json文件推理时会用到,主要内容如下:模型参数信息和plugin信息。

       在模型构建好后,就可以做模型推理,推理流程如下:

       TRT-LLM Python Runtime分析

       1. load_tokenizer

       2. parse_input

       基于 tokenizer 对输入的text做分词,得到分词的id

       3. runner选择&模型加载

       4.推理

       5. 内存管理

       TRT-layer实现举例

       (1)对tensorrt的接口调用:以cast算子为例:functional.py是对TensorRT python API接口的调用

       调用tensorrt接口完成一次推理计算

       (2)TRT-LLM python侧对cpp侧的调用

       调到cpp侧后,就会调用cpp侧的cuda kernel

       trtllm更新快,用了一些高版本的python特性,新的trtllm版本在python3.8上,不一定能跑起来

邮票孔LoRa模组选型指南

       本文档提供HL LoRa模组的详细信息,包括硬件应用接口、电路连接、射频接口以及电气性能等。通过阅读本文档,用户可快速掌握HL模组的接口定义、尺寸与工作特性,以及如何利用其设计物联网通讯方案。用户可通过芮捷官网、淘宝店或技术支持获取最新资料。

       HL是一款具备低功耗与紧凑设计的LoRa串口透传通信模组,专为工业级标准设计,采用高性能芯片方案实现LoRa网络数据传输。在应用中,HL模组能显著减少产品开发时间。模组运行在嵌入式RTOS操作系统下,支持多任务实时处理、内置看门狗与数据缓冲机制,确保系统稳定性。同时,HL支持直接二次开发,SDK源码可在gitee.com或github.com获取。

       HL模组具备多种特性,包括邮票孔封装、天线支持IPEX或邮票孔方式、可调发射功率至dBm、接收灵敏度低至-dBm、链路预算高达dBm、低功耗设计(空闲1mA,休眠2uA)、支持低功耗串口与AT指令配置、定频及跳频模式、AES 数据加密、传输距离可达3~5km以及支持多种收发模式。此模组特别适用于自动抄表、水/电计量、家庭/楼宇自动化、工业监控、无线报警与安全系统等领域。

       HL模组采用邮票孔封装设计,方便集成至产品中,无需射频设计经验。该模组共有个引脚,详细描述见表格。其电气特性包括极限参数、工作参数、直流电气特性与射频参数,注意超过绝对最大额定值可能导致模组损坏。模组的电源电压输入范围为2.2V至3.7V,推荐使用LDO电源以确保性能稳定性。模组峰值电流最大mA,电源设计需留有余量以适应不同应用需求。模组的GPIO引脚用于指示RF状态,辅助调试。UART串口支持低功耗串口传输,波特率范围为bps至bps,当波特率不高于bps时,模组可在休眠状态下接收与响应数据,无需额外唤醒操作。模组的复位与启动选择通过BOOT引脚控制,DIO与CLK用于调试升级,SDA/TXD与SCL/RXD为保留引脚,ADC0与ADC1为模拟信号输入口,Wake_UP用于唤醒模组,AT配置通过AT引脚或发送特殊字符进入模式,模组支持IPEX与邮票孔两种天线接口。

       HL模组的尺寸规格包括模组尺寸与推荐的SMT封装尺寸,具体参数见文档。订货代码信息包含型号说明,用于用户识别与订购模组。

Linux上部署Stable Diffusion WebUI和LoRA训练,拥有你的专属生成模型

       Stable Diffusion是当前图像生成领域炙手可热的模型之一,广泛应用于艺术创作、游戏开发与设计模拟等领域,以其开源生态和易用性受到创作者的青睐,与Midjourney相比,最大的优势是完全免费,且拥有庞大的社区资源。

       本地部署Stable Diffusion首选Stable Diffusion WebUI,但设备要求较高,通常至少需要4G显存。对于寻求稳定服务的用户,云服务器部署是更佳选择。本文将记录Linux环境下部署Stable Diffusion WebUI,并采用LoRA训练专属生成模型的全过程,旨在为有类似需求的用户提供帮助。

       Stable Diffusion

       Stable Diffusion是Diffusion Model的改进版,其网络结构主要包含三个部分:完整的Stable Diffusion网络结构。

       LoRA

       LoRA,即Low-Rank Adaptation,是一种轻量级的大模型微调方法,适用于文本生成模型GPT与图像生成模型Stable-Diffusion。通过在模型特定部分引入低秩结构进行微调,以减少计算资源需求,同时保持原有性能,适应特定应用场景。

       LoRA通过在模型旁边增加旁路,进行降维与升维操作。训练时固定原始模型参数,仅训练降维矩阵A与升维矩阵B。模型输入输出维度不变,输出时将BA与原始模型参数叠加。

       Stable Diffusion WebUI

       Stable Diffusion WebUI提供了友好的网页界面,基于Gradio实现,让用户轻松访问与使用Stable Diffusion的图像生成能力。对于Windows用户,推荐使用B站@秋叶aaaki的免费启动器和安装包。本文主要介绍Linux环境下安装与部署。

       WebUI下载与安装

       推荐从源码直接安装,终端操作如下:

       通过一键启动脚本,自动配置项目环境并安装依赖包,但可能遇到网络问题,如GitHub与HuggingFace网站访问失败。解决方法如下:

       在launch_utils.py中调整prepare_environment函数,将涉及GitHub仓库的依赖替换为ghproxy.com镜像。

       调整HuggingFace网站访问问题,使用国内镜像网站hf-mirror.com,通过临时添加环境变量重试启动webui.sh。

       成功启动后,通过浏览器访问本地http://.0.0.1:,即可看到WebUI界面。部署云端时,根据公网IP或内网/Linu虚拟机端口映射调整本地浏览器访问。

       模型类型介绍

       Stable Diffusion涉及模型类型分为:大模型(基座模型)与用于微调的小模型。

       大模型(基座模型)

       大模型包含TextEncoder、U-Net与VAE,官方提供模型包括sd1.5、sd2与sdxl等,社区模型在此基础上微调。注意,若输出发灰,可能与VAE使用不当有关,需手动添加。

       模型格式为pt、pth、ckpt等,safetensors是无风险文件格式,权重内容一致。

       小模型

       用于微调的小模型通常分为文本与图像类型,用于风格定制。

       模型权重获取

       获取模型权重推荐以下方式:

       开源社区下载

       主要推荐两个开源社区,找到模型,查看信息、提示词,右键复制链接或点击下载。

       Model Scope(国内)

       Model Scope提供机器学习模型,搜索下载所需模型。

       Hugging Face(国外)

       Hugging Face需使用梯子访问,操作与Model Scope类似。

       WebUI使用

       下载模型权重,放置在models/stable-diffusion与models/Lora文件夹,WebUI自动识别。使用界面,选择大模型开始画图。

       LoRA模型训练实战

       本地部署Stable Diffusion WebUI后,通过训练LoRA模型实现风格定制。本文将通过案例指导训练专属LoRA模型。

       下载lora-scripts

       使用终端git下载lora-scripts仓库,确保包含所有子模块。

       准备训练数据集

       搜集特定风格,生成描述文件,使用WebUI批量生成描述,确保文件名称遵循格式。

       LoRA训练

       修改train.sh脚本,执行训练操作。生成模型文件保存至outputs/文件夹,复制至stable-diffusion-webui的models/Lora目录,即可使用。

       总结

       本文介绍了Linux环境下部署Stable Diffusion WebUI与LoRA模型训练的全过程,希望能帮助用户避免部署过程中的常见问题。感谢阅读。

相关栏目:百科