python diffusers StableDiffusionXLPipeline 离线使用

news2024/12/28 4:45:38

  

下载sd_xl_base_1.0.safetensors

https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main

我这下载后放到项目 models 里

 

model_path = "./models/v1-5-pruned-emaonly.safetensors"
# model_path = "./models/v1-5-pruned.safetensors"
# modelId = "runwayml/stable-diffusion-v1-5"
if Util.isMac():
    # from_single_file
    pipe = StableDiffusionPipeline.from_single_file(model_path, original_config_file='./models/v1-inference.yaml', cache_dir='./cache/', use_safetensors=True)
    pipe = pipe.to("mps")
    pipe.enable_attention_slicing()
else:
    pipe = StableDiffusionPipeline.from_single_file(model_path, torch_dtype=torch.float16, use_safetensors=True)
    pipe.to("cuda")
    pipe.enable_model_cpu_offload()
    pipe.enable_attention_slicing()

修改package

Diffusers 里代码写死了会访问 huggingface,需要手工改掉



import sysconfig; 

def repalceStringInFile(srcStr, dstStr, filePath):
    # Read in the file
    with open(filePath, 'r') as file:
        filedata = file.read()

    # Replace the target string
    filedata = filedata.replace(srcStr, dstStr)

    # Write the file out again
    with open(filePath, 'w') as file:
        file.write(filedata)

sitedir=sysconfig.get_paths()["purelib"]
ckPtFilePath=f"{sitedir}/diffusers/pipelines/stable_diffusion/convert_from_ckpt.py"
print(ckPtFilePath)

srcStr="https://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yaml"
dstStr="http://xxxxxx/github/CompVis_stable-diffusion_main_configs_stable-diffusion_v1-inference.yaml"

repalceStringInFile(srcStr, dstStr, ckPtFilePath)

srcStr="https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml"
dstStr="http://xxxxxx/github/Stability-AI_stablediffusion_main_configs_stable-diffusion_v2-inference-v.yaml"
repalceStringInFile(srcStr, dstStr, ckPtFilePath)


srcStr="https://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_base.yaml"
dstStr="http://xxxxxx/github/Stability-AI_generative-models_main_configs_inference_sd_xl_base.yaml"
repalceStringInFile(srcStr, dstStr, ckPtFilePath)


srcStr="https://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_refiner.yaml"
dstStr="http://xxxxxx/github/Stability-AI_generative-models_main_configs_inference_sd_xl_refiner.yaml"
repalceStringInFile(srcStr, dstStr, ckPtFilePath)


ckPtFilePath=f"{sitedir}/diffusers/loaders.py"
print(ckPtFilePath)
srcStr="text_encoder=text_encoder,\n            vae=vae,"
dstStr="text_encoder=text_encoder,\n            local_files_only=True,\n            vae=vae,"
repalceStringInFile(srcStr, dstStr, ckPtFilePath)


ckPtFilePath=f"{sitedir}/diffusers/pipelines/stable_diffusion/convert_from_ckpt.py"
print(ckPtFilePath)
srcStr="has_projection=True, **config_kwargs"
dstStr="has_projection=True, local_files_only=local_files_only, **config_kwargs"
repalceStringInFile(srcStr, dstStr, ckPtFilePath)

http://xxxxxx 需要自己下载github里的文件,找地方放,然后替换链接

local_files_only是让取本地缓存,这个缓存在当前用户文件夹下

ubuntu

/home/fxbox/.cache/huggingface/hub

mac

/Users/linzhiji/.cache/huggingface/hub

把能翻墙的机器里的缓存,拷贝到不能翻墙的机器里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1009843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能创业,2023爆火风口项目:实景无人直播帮实体店精准获客

软件图片素材来自于公众号:生财风暴 关注进行领取价值1000元的采集软件,和呆头鹅批量剪辑和矩阵管理系统演示 把AI和直播结合在一起的实景自动直播你知道吗?如果提起人工智能创业项目啊,你还只知道CHHGPP的话,那不妨把…

光伏浪涌保护器综合应用工程方案

光伏浪涌保护器是一种用于保护光伏发电系统中的设备和线路免受雷电或其他瞬态过电压的影响的装置。光伏发电系统由于其分布式、室外、大面积等特点,容易受到雷电直击或感应,导致系统内部产生高能量的浪涌电流和电压,从而损坏光伏组件、逆变器…

竞赛选题 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

【Git】Git 快照 Snapshot

Git 快照 Snapshot 在对 Git 基础的学习过程中,我们了解了 Git 仓库的基本结构: 工作目录暂存区版本库,即 .git 仓库 下面我们就通过一次修改、暂存以及提交的工作流程,来理解快照(Snapshot)的概念。 现…

基于Docker的JMeter分布式压测实战讲解

一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用Java RMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站…

Linux:基础开发工具之Makefile和缓冲区的基本概念

文章目录 动静态库自动化构建代码缓冲区 动静态库 首先要知道什么是链接: C程序中,并没有定义printf的函数实现,且在预编译中包含的stdio.h中也只有该函数的声明,而没有定义函数的实现 系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没…

旋转偏心裁切刀切向跟踪及半径补偿

1 裁刀半径补偿问题的提出 偏心裁刀一般皮革和纸箱行业用的比较多,它适用于裁切比较厚的材料。对于如图1所示的偏心裁刀,它的刀尖和旋转轴(也就是刀心)存在一个距离,设为半径r。由于改刀刀刃有方向,所以用该刀去切割直线时&#…

使用nvm管理node.js

使用nvm管理node.js 一、简介 nvm是一个node的版本管理工具。可以在多种系统上管理Node.js 版本的工具。使用 NVM,可以轻松地切换不同版本的Node.js,并方便地管理不同版本的全局包和本地包。 二、安装与下载 1.删除原有node.js 首先需要卸载已安装的…

免费音乐下载网站分享(MP3文件格式)

免费音乐下载网站分享(MP3文件格式) 最近需要下载一些歌曲,发现很多音乐app上下载文件都需要vip,再上网查询了一番,最后发现了一个宝藏网站,可以免费下载各种格式的MP3文件,在这里给大家分享一…

建设数字孪生智慧城市是未来城市的重要增长点

中国国家创新与发展战略研究会学术委员会常务副主席、重庆市原市长黄奇帆在《瞭望》撰文指出: AI时代的城市是由实体空间和数字空间组成的数字孪生城市,要充分重视对数字空间的治理。随着城市数字化进程的加快,城市、企业、个人开始形成多样化…

软件需求怎么写?

前言:一般来说,软件产品的需求人员的主要输出物就是软件需求,如果这个软件产品就XX系统,人们口中的“系统需求”和“软件需求”就没有什么区别了。在车企行业,推行这ASPICE体系,在这个体系中明确申请了系统…

2023工博会,正运动开放式激光振镜运动控制器应用预览(三)

展会倒计时:4天 本次的中国国际工业博览会正运动技术将携开放式激光振镜运动控制器ZMC408SCAN-V2亮相。 •绿色生产,减少材料和资源浪费,提升可持续性; •节省多套硬件成本,替代传统的激光加工系统,降低项…

【深度学习】树莓派Zero w深度学习模型Python推理

在机器学习开发过程中,当模型训练好后,接下来就要进行模型推理了,根据部署环境可分为三类场景: 边缘计算:一般指手机,嵌入式设备,直接在数据生成的设备上进行推理,因为能避免将采集…

MAC MINI 2012安装Montery折腾笔记

MAC MINI 2012安装Montery折腾笔记(作为电视盒子/远程开发机) 起因: 手头有个mac mini,2018年买的2手。一直都是10.12系统,处理python和苹果开发都受制于旧系统,很多软件也装不上,于是有了升级…

Qt开发 入门

1.Qt概述 什么是Qt 不论我们学习什么样的知识点首先第一步都需要搞明白它是什么,这样才能明确当前学习的方向是否正确,下面给大家介绍一下什么是Qt。 Qt是一个跨平台的C应用程序开发框架 具有短平快的优秀特质: 投资少、周期短、见效快、效益高几乎支持…

Java-集合类

集合 Java集合是Java中用于存储和管理一组对象的工具。Java集合提供了相应的方法,用于用户对集合内数据的操作。 Java集合类提供了许多不同的数据结构,如列表、队列、栈、集合和映射,以满足不同类型的编程需求。 程序中如何存储大批量同类型…

vue项目中使用特殊字体的步骤

写在前面 在项目中使用特殊字体,需要注意,所使用的特殊字体是否被允许商用或是个人开发,以及如何使用,切记不要侵权。 首先需要在对应字体网站下载字体文件,取出里面后缀名为.ttf的文件 然后把该文件放到src -> ass…

python自(2)切片 字典 遍历删除添加修改查询定义函数函数返回值作用域序列化异常报错urllib使用一个类型六个方法下载 视频音频图片

切片 # # 切片# s hello word# # 下标索引为0的 # print(s[0]) #h# # 左闭右开 (左是下标开始的,右是几个索引值)例如从0开始算 4个索引值 # print(s[0:4]) #hell# # 更改起始值的开始位置 # print(s[1:]) #ello word# # 下标结束位置 # p…

生成式人工智能在高等教育 IT 中的作用

作者:Jared Pane 通过将你大学的数据与公共 LLMs 和 Elasticsearch 安全集成来找到你需要的答案。 根据 2023 年 4 月 EDUCAUSE 的一项调查,83% 的受访者表示,生成式人工智能将在未来三到五年内深刻改变高等教育。 学术界很快就询问和想象生…

9月14日作业

实现myVector #include <iostream>using namespace std;template <typename T> class myVector { private:T* data;int size;int capacity; public:// 构造函数myVector() : data(nullptr), size(0), capacity(0) {}//拷贝构造函数myVector(const myVector& o…