sdxl量化加速筆記

文章目錄

    • 一、量化加速sdxl模型
      • 1)涉及模型
      • 2)環境安裝
      • 3)轉換模型safetensor to pytorch文件
      • 4)tensorRT的環境準備
        • (1)下載tensorRT 10.10
        • (2)下載cuda

一、量化加速sdxl模型

1)涉及模型

  • 涉及模型
waiNSFWIllustrious_v120.safetensors
anyloraCheckpoint_bakedvaeBlessedFp16.safetensors

2)環境安裝

torch>=1.9.0
safetensors>=0.3.0 
numpy==2.2.6

3)轉換模型safetensor to pytorch文件

  • 轉換指令
python3 safetensor_to_pytorch_converter.py
  • 代碼
#!/usr/bin/env python3
"""
Safetensor to PyTorch Converter
支持將safetensor格式的模型文件轉換為PyTorch格式
"""import os
import sys
import argparse
from pathlib import Path
import torch
from safetensors.torch import load_file, save_file
import logging# 設置日志
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)def convert_safetensor_to_pytorch(safetensor_path, output_path=None):"""將safetensor文件轉換為PyTorch格式Args:safetensor_path (str): safetensor文件路徑output_path (str, optional): 輸出文件路徑,如果為None則自動生成Returns:str: 輸出文件路徑"""try:# 檢查輸入文件是否存在if not os.path.exists(safetensor_path):raise FileNotFoundError(f"文件不存在: {safetensor_path}")# 如果未指定輸出路徑,自動生成if output_path is None:input_path = Path(safetensor_path)output_path = input_path.with_suffix('.pth')logger.info(f"正在加載safetensor文件: {safetensor_path}")# 加載safetensor文件state_dict = load_file(safetensor_path)logger.info(f"模型包含 {len(state_dict)} 個參數")# 保存為PyTorch格式torch.save(state_dict, output_path)logger.info(f"轉換完成,保存到: {output_path}")# 顯示文件大小信息input_size = os.path.getsize(safetensor_path) / (1024 * 1024)  # MBoutput_size = os.path.getsize(output_path) / (1024 * 1024)  # MBlogger.info(f"輸入文件大小: {input_size:.2f} MB")logger.info(f"輸出文件大小: {output_size:.2f} MB")return output_pathexcept Exception as e:logger.error(f"轉換失敗: {str(e)}")raisedef convert_specific_models():"""轉換指定的兩個模型文件"""	models_to_convert = ["/home/fun/tensor_pic/safe_models/waiNSFWIllustrious_v120.safetensors","/home/fun/tensor_pic/safe_models/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors"]converted_files = []for model_name in models_to_convert:if os.path.exists(model_name):logger.info(f"開始轉換: {model_name}")try:output_file = convert_safetensor_to_pytorch(model_name)converted_files.append(output_file)logger.info(f"? {model_name} 轉換成功")except Exception as e:logger.error(f"? {model_name} 轉換失敗: {str(e)}")else:logger.warning(f"??  文件不存在: {model_name}")return converted_filesdef main():parser = argparse.ArgumentParser(description='將safetensor文件轉換為PyTorch格式')parser.add_argument('--input', '-i', type=str, help='輸入的safetensor文件路徑')parser.add_argument('--output', '-o', type=str, help='輸出的PyTorch文件路徑')parser.add_argument('--convert-specific', action='store_true', help='轉換指定的兩個模型文件')args = parser.parse_args()try:if args.convert_specific:logger.info("開始轉換指定的模型文件...")converted_files = convert_specific_models()if converted_files:logger.info(f"成功轉換 {len(converted_files)} 個文件:")for file in converted_files:logger.info(f"  - {file}")else:logger.warning("沒有成功轉換任何文件")elif args.input:# 轉換單個文件output_file = convert_safetensor_to_pytorch(args.input, args.output)logger.info(f"轉換完成: {output_file}")else:# 默認轉換指定模型logger.info("未指定參數,開始轉換指定的模型文件...")convert_specific_models()except KeyboardInterrupt:logger.info("用戶中斷操作")sys.exit(1)except Exception as e:logger.error(f"程序執行失敗: {str(e)}")sys.exit(1)if __name__ == "__main__":main() 
  • 輸出
(tensor_sd_xl) fun@fun:~/tensor_pic/safe2pytorch_tool$ python3 safetensor_to_pytorch_converter.py 
2025-07-31 13:02:27,927 - INFO - 未指定參數,開始轉換指定的模型文件...
2025-07-31 13:02:27,927 - INFO - 開始轉換: /home/fun/tensor_pic/safe_models/waiNSFWIllustrious_v120.safetensors
2025-07-31 13:02:27,927 - INFO - 正在加載safetensor文件: /home/fun/tensor_pic/safe_models/waiNSFWIllustrious_v120.safetensors
2025-07-31 13:02:27,945 - INFO - 模型包含 2515 個參數
2025-07-31 13:02:31,083 - INFO - 轉換完成,保存到: /home/fun/tensor_pic/safe_models/waiNSFWIllustrious_v120.pth
2025-07-31 13:02:31,084 - INFO - 輸入文件大小: 6616.63 MB
2025-07-31 13:02:31,084 - INFO - 輸出文件大小: 6617.17 MB
2025-07-31 13:02:31,084 - INFO - ? /home/fun/tensor_pic/safe_models/waiNSFWIllustrious_v120.safetensors 轉換成功
2025-07-31 13:02:31,084 - INFO - 開始轉換: /home/fun/tensor_pic/safe_models/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors
2025-07-31 13:02:31,085 - INFO - 正在加載safetensor文件: /home/fun/tensor_pic/safe_models/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors
2025-07-31 13:02:31,092 - INFO - 模型包含 1143 個參數
2025-07-31 13:02:32,022 - INFO - 轉換完成,保存到: /home/fun/tensor_pic/safe_models/anyloraCheckpoint_bakedvaeBlessedFp16.pth
2025-07-31 13:02:32,022 - INFO - 輸入文件大小: 2033.85 MB
2025-07-31 13:02:32,022 - INFO - 輸出文件大小: 2034.11 MB
2025-07-31 13:02:32,023 - INFO - ? /home/fun/tensor_pic/safe_models/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors 轉換成功
(tensor_sd_xl) fun@fun:~/tensor_pic/safe2pytorch_tool$ 

4)tensorRT的環境準備

(1)下載tensorRT 10.10

[鏈接]

在這里插入圖片描述
命令安裝這個包

1、安裝包
sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-10.10.0-cuda-12.9_1.0-1_amd64.deb
2、查看 TensorRT 包是否可用:如果能看到 libnvinfer、libnvinfer-dev 等相關包,說明源添加成功
apt-cache search tensorrt
如果沒有輸出,說明還沒安裝。
3、安裝 TensorRT:
sudo apt update
sudo apt install libnvinfer-dev libnvinfer-plugin-dev python3-tensorrt
4、安裝完成后再用第2步命令檢查
apt-cache search tensorrt
驗證 Python TensorRT 是否可用
python3 -c "import tensorrt; print(tensorrt.__version__)"
如果能輸出版本號,說明 Python TensorRT 安裝成功。
(2)下載cuda

12.9 cuda鏈接

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda-repo-ubuntu2204-12-9-local_12.9.1-575.57.08-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-9-local_12.9.1-575.57.08-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-9

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

西門子 G120 變頻器全解析:從認知到參數設置

在工業自動化領域,變頻器作為電機驅動的核心設備,其穩定運行與精準控制直接影響生產效率。西門子 G120 變頻器憑借可靠性能與靈活配置,成為眾多工業場景的優選。本文將從基礎認知、操作面板到參數設置,全方位帶你掌握 G120 變頻器…

【自動化運維神器Ansible】YAML支持的數據類型詳解:構建高效Playbook的基石

目錄 1 YAML數據類型概述 1.1 為什么數據類型很重要? 1.2 YAML數據類型分類 2 標量類型(Scalars) 2.1 字符串(String) 2.2 布爾值(Boolean) 2.3 數值(Numbers) 2…

基于崗位需求的康養休閑旅游服務實訓室建設方案

一、康養休閑旅游服務實訓室建設方案建設需求分析康養休閑旅游服務行業的快速發展對技能人才提出了精準化、場景化的能力要求,康養休閑旅游服務實訓室建設方案需緊密對接健康咨詢、接待服務、康樂服務等核心崗位群的實際需求。從崗位技能來看,健康咨詢崗…

MES 與工業物聯網(IIoT)的化學反應:為何是智能工廠的 “神經中樞”?

從“被動救火”到“主動預警”的工廠革命想象一下,當你正在家中熟睡時,智能手環突然震動,提醒你心率異常;早上出門前,手機 APP 告訴你愛車的某個零件即將達到磨損極限,建議及時更換。這些日常生活中的智能預…

工作好用小工具積累

1、內部環境太多,網站導航git地址:https://github.com/hslr-s/sun-panel/releases gitee地址:https://gitee.com/luofei1284999247/sun-panel

智能Agent場景實戰指南 Day 26:Agent評估與性能優化

【智能Agent場景實戰指南 Day 26】Agent評估與性能優化 開篇 歡迎來到"智能Agent場景實戰指南"系列的第26天!今天我們將深入探討智能Agent的評估方法與性能優化技術。構建高效、可靠的智能Agent系統需要完善的評估體系和優化策略,本文將系統…

機器學習——下采樣(UnderSampling),解決類別不平衡問題,案例:邏輯回歸 信用卡欺詐檢測

過采樣: 機器學習——過采樣(OverSampling),解決類別不平衡問題,案例:邏輯回歸 信用卡欺詐檢測-CSDN博客 (完整代碼在底部) 使用下采樣解決類別不平衡問題 —— 以信用卡欺詐識別為…

Qt 槽函數被執行多次,并且使用Qt::UniqueConnection無效【已解決】

Qt 槽函數被執行多次,并且使用Qt::UniqueConnection無效引言一、問題描述二、解決方案三、深入了解信號和槽綁定機制引言 之前剛遇到 - 信號和槽正常連接返回true,但發送信號后槽函數無響應問題,現在又遇到槽函數執行多次,使用Qt…

Autosar Nm-網管報文PNC停發后無法休眠問題排查

文章目錄前言Autosar CanNm標準中的相關參數CanNmAllNmMessagesKeepAwakePN過濾功能CanNm_ConfirmPnAvailability問題描述問題原因排查解決方案擴展總結前言 Autosar Nm中針對于支持PN功能的收發器,要求PNC停發后允許進入休眠模式,開發過程中遇到PNC停發…

RK3568下的進程間通信:基于UDP的mash網絡節點通信

基于UDP的mash網絡節點通信系統實現: 最近的項目中需要實現一個功能,類似mash網絡的功能,比如 類似下圖中的多個節點之間,相互之間通信, 節點A自身的通信列表中,只有B和C,所以A發出的消息給B和C,依次類推,A發送的消息所有節點都能收到,同理,其他節點比如K節點發送的…

Effective C++ 條款17:以獨立語句將newed對象置入智能指針

Effective C 條款17:以獨立語句將newed對象置入智能指針核心思想:使用智能指針管理動態分配的對象時,必須確保new操作與智能指針構造在同一獨立語句中完成,避免編譯器優化順序導致的內存泄漏。 ?? 1. 跨語句初始化的危險性 資源…

Linux iptables防火墻操作

資料: 網絡運維相關 - iptables 【Main】 https://www.zsythink.net/archives/tag/iptables/ netfilter 在 Linux 內核 TCP/IP協議棧中的位置 【框架】【Aulaxiry】 https://zhuanlan.zhihu.com/p/93630586 1 概念詳解 ● 防火墻概念 ○ 主機防火墻 網絡防火墻 ○…

飛書推送工具-自動化測試發送測試報告一種方式

飛書推送工具 要獲取飛書開發所需的 APP_ID、APP_SECRET 以及用戶的 USER_ID,需通過飛書開放平臺和飛書客戶端的相關設置操作。以下是詳細步驟: 一、獲取 APP_ID 和 APP_SECRET(飛書應用憑證) APP_ID 和 APP_SECRET 是飛書開放…

從零開始的云計算生活——第三十七天,跬步千里,ansible之playbook

目錄 一.故事劇情 二.Playbook簡介 三.Playbook核心元素(重要) 四.Playbook語法 五.Playbook的運行方式 六.Playbooks中tasks語法使用 1、file 2、lineinfile 3、replace 4、shell 5、debug 6、template/copy 7、fetch 8、unarchive 9、wait_for 10、yum 11、…

AI驅動下的數據新基建:騰訊游戲數據資產治理與湖倉架構革新

在大模型技術迅猛發展的今天,AI 正深度重塑數據基礎設施,推動其向智能化快速演進。如何將 AI 深度融入數據管理,釋放數據的潛在價值、提升運營效率,成為企業在構建 AI 驅動的數據資產管理體系的核心問題。在近期舉辦的“DataFun A…

ubuntu 系統風扇控制軟件 CoolerControl

背景 A6000顯卡的溫度一直都是86度左右,GPU的風扇轉速不夠大。 我首先把 nvidia的驅動更新了,但是發現風扇依然依然保持在較低的轉速。 后面無意間搜到了CoolerControl 這個linux平臺的風扇控制軟件。設置之后,增加了風扇的轉速,…

Oracle 11gR2 Clusterware應知應會

Oracle 11gR2 Clusterware應知應會 關鍵特性 啟動順序 日志路徑 資源狀態 資源管理 關鍵特性 ?? Oracle 11gR2 Clusterware的一些關鍵特性如下: 在安裝運行11gR2的Real Application Clusters數據庫之前需要先安裝11gR2 Clusterware。 GRID home包括Oracle Clusterware和AS…

微信小程序蘋果手機和安卓,怎么做適配

1. 基于 rpx 單位進行布局適配微信小程序采用 rpx 作為尺寸單位,以實現不同設備的布局適配。小程序的屏幕寬度固定為 750rpx,在不同設備上通過動態計算 1rpx 對應的像素值進行適配。例如,在 iPhone 6 中,屏幕寬度為 375px&#xf…

XGBoost三部曲:XGBoost參數詳解

之前已經介紹了XGBoost三部曲:XGBoost原理。本文詳細介紹XGBoost參數,讓大家在使用XGBoost的過程中能得心應手。后續會更新XGBoost實戰,敬請期待。 文章目錄 一、核心概念回顧 二、XGBoost算法參數整體介紹 1 原生接口和Scikit-learn接口的區別 2 參數分類詳解 三、核心Boos…

【python】轉移本地安裝的python包

我們現在需要將某個環境已經安裝的 python 包離線傳遞到另外一個環境,且確保這種安裝行為最終不需要對 PYPI 中央倉庫的有效連接,也能完成。下面給出兩種辦法: docker container 如果你的 python 環境位于某個容器內,那最好的辦法…