本地部署运行 HuggingFace Diffuser 大模型

最近需要篡改大模型验证篡改定位水印的泛化性,但是由于网络连接原因无法直接使用🤗's Diffusers library  ,在网上找到了以下本地部署的方法。


目录

下载模型,部署至服务器上

1)huggingface官网下载

2)git-lfs clone

3)hf_hub_download下载 

部署运行


下载模型,部署至服务器上

模型下载包括三种方法:

1)huggingface官网下载

 (很慢..)

2)git-lfs clone

 

 需要配置SSH Public Key公钥,感谢以下教程:

huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件_下载huggingface模型到自己的服务器使用-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_47748259/article/details/135621579?spm=1001.2014.3001.5501

(大文件clone失败.) 

3)hf_hub_download下载 

       当使用git-lfs clone库中大文件时,会跳过乃至失败,故可采用官网提供的hf_hub_download函数下载剩余大文件。

        该方法需要配置huggingface身份验证令牌token:

huggingface学习 | 云服务器使用hf_hub_download下载huggingface上的模型文件_阿里云下载huggingface-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_47748259/article/details/135714102

import os

# 注意os.environ得在import huggingface库相关语句之前执行。
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from huggingface_hub import hf_hub_download


def download_model(local_dir, repo_id, filename, subfolder, token):
    print(
        f'开始下载\n仓库:{repo_id}\n大模型:{filename}\n如超时不用管,会自定继续下载,直至完成。中途中断,再次运行将继续下载。')
    while True:
        try:
            hf_hub_download(local_dir=local_dir,
                            repo_id=repo_id,
                            token=token,
                            filename=filename,
                            subfolder=subfolder,
                            local_dir_use_symlinks=False,
                            resume_download=True,
                            etag_timeout=100
                            )
        except Exception as e:
            print(e)
        else:
            print(f'下载完成,大模型保存在:{local_dir}\{filename}')
            break


if __name__ == '__main__':
    repo_id = 'stabilityai/stable-diffusion-2-inpainting'    # 想下载的文件所在仓库
    filename = '512-inpainting-ema.ckpt'                # 文件名
    subfolder = ''                                      # 文件所在仓库下的文件夹名
    token = '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'        # huggingface 身份令牌
    local_dir = r'./'                                   # 文件保存本地地址
    download_model(local_dir, repo_id, filename, subfolder, token)

部署运行

import PIL
import requests
import torch
from io import BytesIO
from diffusers import StableDiffusionInpaintPipeline


'''
def download_image(url):
    response = requests.get(url)
    return PIL.Image.open(BytesIO(response.content)).convert("RGB")

img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"

init_image = download_image(img_url).resize((512, 512))
mask_image = download_image(mask_url).resize((512, 512))
init_image.save("./example.png")
mask_image.save("./example_mask.png")
'''
# 按照路径打开文件并读取字节数据,然后将字节数据传递给BytesIO,最后用PIL库打开并处理图像
def download_image(path):
    with open(path, 'rb') as file:
        image_data = file.read()
    return PIL.Image.open(BytesIO(image_data)).convert("RGB")

img_path = "/root/autodl-tmp/0110_original.png"
mask_path = "/root/autodl-tmp/0110_mask.png"
init_image = download_image(img_path).resize((512, 512))
mask_image = download_image(mask_path).resize((512, 512))


pipe = StableDiffusionInpaintPipeline.from_pretrained(
    "/root/autodl-tmp/stable-diffusion-2-inpainting",
    torch_dtype=torch.float16,
)
pipe.to("cuda")

prompt = "a capybara, high resolution, sitting on a park bench"
# prompt = "a blue plane in the sky, high resolution"
#image and mask_image should be PIL images.
#The mask structure is white for inpainting and black for keeping as is
image = pipe(prompt=prompt, image=init_image, mask_image=mask_image).images[0]
image.save("./capybara_sit_on_a_bench.png")

 结果:

 

基于 huggingface diffuser 库云服务器实现 stable diffusion inpaint样例代码-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_47748259/article/details/135613019

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bert框架详解(下)

一、Bert模型网络结构 1、Add与Normalize Add:将前面的数据传到后面层,残差网络同理。 Normalize :归一化,与batch normalize同理。 2、outputs(shifted right) outputs(shifted right):指在…

操作系统学习笔记-3.2虚拟内存

文章目录 虚拟内存请求分页管理方式页面置换算法最佳置换算法工作原理OPT 算法的示例最佳置换算法的优点和缺点 先进先出置换算法最近最久未使用时钟置换算法时钟置换算法的工作原理:算法的步骤: 改进型时钟置换算法改进型时钟置换算法的特点&#xff1a…

【数学】通用三阶矩阵特征向量的快速求法 超简单!!!

目录 三个定理1、3个特征值(即根互不相等)例题实践2、2个特征值(即有一个双重根)3、1个特征值(即有一个三重根)定理证明 三个定理 本定理适用于 所有三阶矩阵 的特征向量求法! 1、3个特征值&…

16通道AD采集方案,基于复旦微ARM + FPGA国产SoC处理器平台

测试数据汇总 表 1 本文带来的是基于复旦微FMQL20S400M四核ARM Cortex-A7(PS端) + FPGA可编程逻辑资源(PL端)异构多核SoC处理器设计的全国产工业评估板的AD采集案例。本次案例演示的开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit PL端开发环境:P…

文件系统和日志管理

文件系统和日志管理 文件系统:文件系统提供了一个接口,用户用来访问硬件设备(硬盘、光驱)------------- 在硬件设备上对文件的管理 1、文件存储在硬盘上(机械硬盘:一个扇区 2、文件中硬盘上的最小存储单位…

数据结构---排序总结

1.排序的时间复杂度(均为平均值) O(n^2) :冒泡排序,选择排序,插入排序。 O(n * log(n)):堆排序,快速排序,归并排序。 O(n^1.3):希尔排序 2.空间复杂度: O(n) …

数据结构:七种排序及总结

文章目录 排序一插入排序1直接插入排序2希尔排序二选择排序3直接选择排序4堆排序三 交换排序5冒泡排序6快速排序四 归并排序7归并排序源码 排序 我们数据结构常见的排序有四大种,四大种又分为七小种,如图所示 排序:所谓排序,就是…

【操作系统】基于环形队列的生产消费模型

目录 一、单生产单消费 1.环形队列的实现 (1) void P(sem_t &sem); (2) void V(sem_t &sem); (3) RingQueue() (4) ~RingQueue() (5) void Push(const T &in); (6) void Pop(T *out); 2.上层调用逻辑 二、多生产多消费 1.环形队列的实现 (1) RingQueue…

Linux下的WatchDog

看门狗🐕 看门狗简介 看门狗定时器(Watchdog Timer)是一种定时器,用于检测系统是否正常运行。如果系统在规定时间内没有向看门狗定时器发送复位信号,看门狗定时器就会产生复位信号,使系统复位。看门狗定时…

基于SpringBoot的速食零食商城+LW示例参考

1.项目介绍 功能模块:管理端(用户管理、账号管理、商品分类管理、商品信息管理、订单管理等),用户端(商品信息、登录注册、我的订单等)技术栈:SpringBoot,thymeleaf,MyB…

springboot020基于Java的免税商品优选购物商城设计与实现

🍅点赞收藏关注 → 文档最下方联系方式领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 一 、设计说明 1…

认识物联网

新一代信息技术 物联网 物物相连的互联网,即物联网,又称传感器常见的传感器 • 温度传感器 • 压力传感器 • 声音传感器 • 02 • */08521 物联网概念 • 通过射频识别,红外传感器,全球定位系统GPS,激光扫描…

CODESYS可视化桌面屏保-动态气泡制作详细案例

#一个用于可视化(HMI)界面的动态屏保的详细制作案例程序# 前言: 在工控自动化设备上,为了防止由于人为误触发或操作引起的故障,通常在触摸屏(HMI)增加屏幕保护界面,然而随着PLC偏IT化的发展,在控制界面上的美观程度也逐渐向上位机或网页前端方面发展,本篇模仿Windows…

Java基础——反射

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 翻译成人话就是:反射技术,指的是加载类的字节码到内存,并以…

Node.js——文件上传

文件上传 插件:formidable,地址:https://www.npmjs.com/package/formidable,参考里面with Express.js部分。 html部分截图参考: 用express-generator生成的示例代码: const formidable require(formi…

PCA9632笔记

个人学习笔记,有错漏。具体请以官方数据手册为准 I2C地址 PCA9632使用I2C通信,I2C设备地址固定 发出START后输出访问设备地址(8bit版本地址固定) 0x62(7位地址) 地址最后一位为1读 为0写 8位写地址 0xC4…

【算法】递归+回溯+剪枝:78.子集

目录 1、题目链接 2、题目 3、解法(回溯剪枝) 4、代码 1、题目链接 78.子集(LeetCode) 2、题目 3、解法(回溯剪枝) 思路: 枚举子集(答案)的第一个数选谁,第二个数选谁,第三个数选谁&#x…

HCIP(7)-边界网关协议BGP基本配置(对等体peer,宣告network,引入import)

边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。由于不同的管理机构分别控制着他们各自的路由…

基于python的机器学习(二)—— 使用Scikit-learn库

目录 一、样本及样本划分 1.1 划分样本的方法 1.1.1 train_test_split()函数 1.1.2 时间序列划分 1.1.3 交叉验证 二、导入或创建数据集 2.1 导入Sklearn自带的样本数据集 2.2 利用Sklearn生成随机的数据集 2.3 读入自己创建的数据集 2.3.1 用Python直接读取文本文件…

Webpack5常用配置

1、序言 Webpack属于构建工具,可以将开发者代码转化成浏览器能识别的代码,让开发者专注代码实现,不用过多关注浏览器兼容性问题。 Webpack常见功能: 模块打包:Webpack 可以将项目中的所有模块(包括 JavaScr…