Win11本地部署FaceFusion3最強AI換臉,整合Tensorrt10.4推理加速,讓甜品顯示卡也能發揮生產力

刘悦的技术博客發表於2024-09-28

FaceFusion3.0.0大抵是現在最強的AI換臉專案,分享一下如何在Win11系統,基於最新的cuda12.6配合最新的cudnn9.4本地部署FaceFusion3.0.0專案,並且搭配Tensorrt10.4,提高推理速度和效率,讓甜品級顯示卡也能爆發生產力。

安裝最新版本Cuda12.6以及Cudnn9.4

CUDA是NVIDIA公司開發的一種技術,它能讓GPU像CPU一樣程式設計,讓GPU也能參與到計算中來,從而加速計算過程。你可以把它想象成一種“語言”,讓程式設計師可以指揮GPU的“工人”們一起工作。

cuDNN則是專門為深度學習設計的“工具箱”。深度學習就像蓋房子,需要很多“積木”塊,比如卷積、池化等操作。cuDNN提供了這些預先最佳化好的“積木”,讓程式設計師可以直接使用,而不用自己從頭開始編寫這些複雜的程式碼,從而大大提高了深度學習模型的訓練和推理速度。 它就像一個經驗豐富的建築工人,能快速高效地完成蓋房子的工作。

安裝包可以去 Nvidia 官方網站進行下載,但是必須登入Nvidia賬號,這裡為大家下載好了最新的安裝包:

https://pan.quark.cn/s/bc3ab3494596

首先雙擊 cuda_12.6.1_560.94_windows.exe 進行安裝,注意不要安裝到C盤,因為太佔地方,建議在別的磁碟機代號建立12.6目錄,然後進行安裝即可。

安裝成功後,執行命令進行檢查:

(base) PS C:\Users\zcxey> nvcc -V  
nvcc: NVIDIA (R) Cuda compiler driver  
Copyright (c) 2005-2024 NVIDIA Corporation  
Built on Wed_Aug_14_10:26:51_Pacific_Daylight_Time_2024  
Cuda compilation tools, release 12.6, V12.6.68  
Build cuda_12.6.r12.6/compiler.34714021_0  
(base) PS C:\Users\zcxey>

可以看到顯示的版本是 12.6

隨後開啟 cudnn-windows-x86_64-9.4.0.58_cuda12-archive 目錄,把其中的 bin、include以及lib目錄直接複製覆蓋到 cuda 的安裝目錄即可。至此,cuda12.6和其對應的cudnn9.4就安裝好了,注意版本號必須吻合。

安裝Tensorrt10.4

關於Tensorrt,想象一下你訓練好了一隻非常聰明的狗狗(你的深度學習模型),它已經學會了識別各種貓和狗的圖片。但是,這隻狗狗每次識別圖片都需要很長時間,效率不高。

TensorRT就像一個訓練師,它能幫助你把這隻狗狗訓練得更加高效。它會最佳化狗狗的識別方法,讓它能夠更快更準確地識別圖片,並且消耗更少的能量。 所以,用TensorRT最佳化後的模型,就能在你的電腦或伺服器上更快地進行推理(識別圖片),從而節省時間和資源。

Tensorrt主要針對的是已經訓練好的模型,而不是訓練模型本身。 它就像一個專業的最佳化器,讓你的模型在實際應用中跑得更快更省力。

開啟 TensorRT-10.4.0.26 目錄,把 lib 目錄下的所有動態庫 dll 檔案全部複製到 cuda12.6 安裝目錄的 bin目錄下即可:

Directory of D:\12.6\bin  
  
2024/09/27  11:08    <DIR>          .  
2024/09/27  10:48    <DIR>          ..  
2024/08/15  02:14           228,352 bin2c.exe  
2024/08/15  02:01                66 compute-sanitizer.bat  
2024/09/27  10:48    <DIR>          crt  
2024/08/15  02:11           202,752 cu++filt.exe  
2024/08/15  02:34       100,806,656 cublas64_12.dll  
2024/08/15  02:34       510,903,296 cublasLt64_12.dll  
2024/08/15  02:14         7,739,904 cudafe++.exe  
2024/08/15  02:11           556,544 cudart64_12.dll  
2023/11/30  16:26           288,296 cudnn64_8.dll  
2024/09/01  04:24           265,272 cudnn64_9.dll  
2024/09/01  04:24       243,945,512 cudnn_adv64_9.dll  
2023/11/30  16:26       125,217,320 cudnn_adv_infer64_8.dll  
2023/11/30  16:26       116,558,888 cudnn_adv_train64_8.dll  
2024/09/01  04:24         4,002,872 cudnn_cnn64_9.dll  
2023/11/30  16:26       582,690,344 cudnn_cnn_infer64_8.dll  
2023/11/30  16:26       122,242,104 cudnn_cnn_train64_8.dll  
2024/09/01  04:24       432,804,904 cudnn_engines_precompiled64_9.dll  
2024/09/01  04:24        16,297,000 cudnn_engines_runtime_compiled64_9.dll  
2024/09/01  04:25         2,063,400 cudnn_graph64_9.dll  
2024/09/01  04:25        44,681,784 cudnn_heuristic64_9.dll  
2024/09/01  04:25       107,492,904 cudnn_ops64_9.dll  
2023/11/30  16:26        89,759,272 cudnn_ops_infer64_8.dll  
2023/11/30  16:26        70,162,472 cudnn_ops_train64_8.dll  
2024/08/15  03:03       275,258,368 cufft64_11.dll  
2024/08/15  03:03           163,328 cufftw64_11.dll  
2024/08/15  02:45         1,513,984 cuinj64_126.dll  
2024/08/15  02:11        11,713,024 cuobjdump.exe  
2024/08/15  02:25        63,279,104 curand64_10.dll  
2024/08/15  04:12       116,768,256 cusolver64_11.dll  
2024/08/15  04:11        77,813,248 cusolverMg64_11.dll  
2024/08/15  03:09       287,497,216 cusparse64_12.dll  
2024/08/15  02:14           881,664 fatbinary.exe  
2024/08/15  03:20           292,352 nppc64_12.dll  
2024/08/15  03:20        16,235,008 nppial64_12.dll  
2024/08/15  03:20         6,234,624 nppicc64_12.dll  
2024/08/15  03:20         9,865,728 nppidei64_12.dll  
2024/08/15  03:20        96,892,416 nppif64_12.dll  
2024/08/15  03:20        39,228,416 nppig64_12.dll  
2024/08/15  03:20         9,341,952 nppim64_12.dll  
2024/08/15  03:20        36,831,232 nppist64_12.dll  
2024/08/15  03:20           265,728 nppisu64_12.dll  
2024/08/15  03:20         4,221,440 nppitc64_12.dll  
2024/08/15  03:20        12,687,872 npps64_12.dll  
2024/08/15  02:34           331,776 nvblas64_12.dll  
2024/08/15  02:14        14,029,824 nvcc.exe  
2024/08/15  02:14               343 nvcc.profile  
2024/08/15  02:11        50,708,480 nvdisasm.exe  
2024/08/15  02:14           838,656 nvfatbin_120_0.dll  
2024/08/30  19:47       215,426,088 nvinfer_10.dll  
2024/08/30  19:46             5,688 nvinfer_10.lib  
2024/08/30  19:48     1,436,593,704 nvinfer_builder_resource_10.dll  
2024/08/30  19:47           616,488 nvinfer_dispatch_10.dll  
2024/08/30  19:46             4,362 nvinfer_dispatch_10.lib  
2024/08/30  19:46        29,457,448 nvinfer_lean_10.dll  
2024/08/30  19:46             5,104 nvinfer_lean_10.lib  
2024/08/30  19:47        30,986,792 nvinfer_plugin_10.dll  
2024/08/30  19:46             2,564 nvinfer_plugin_10.lib  
2024/08/30  19:47           565,288 nvinfer_vc_plugin_10.dll  
2024/08/30  19:46             2,374 nvinfer_vc_plugin_10.lib  
2024/08/15  02:13        38,856,192 nvJitLink_120_0.dll  
2024/08/15  02:23         4,901,888 nvjpeg64_12.dll  
2024/08/15  02:14        20,608,000 nvlink.exe  
2024/08/30  19:47         3,064,872 nvonnxparser_10.dll  
2024/08/30  19:46             2,524 nvonnxparser_10.lib  
2024/08/15  02:45         2,210,304 nvprof.exe  
2024/08/15  02:11           254,464 nvprune.exe  
2024/08/15  02:11         5,345,792 nvrtc-builtins64_126.dll  
2024/08/15  02:11        45,535,744 nvrtc64_120_0.alt.dll  
2024/08/15  02:11        45,475,328 nvrtc64_120_0.dll  
2024/08/15  03:45               129 nvvp.bat  
2024/08/15  02:14        20,220,416 ptxas.exe  
2024/08/15  02:14            84,480 __nvcc_device_query.exe  
              71 File(s)  5,612,029,986 bytes  
               3 Dir(s)  128,267,644,928 bytes free

至此,就完成了 Tensorrt10.4 的安裝。

安裝和部署FaceFusion3.0.0

首先確保本地已經安裝好 Python3.11 的開發環境,隨後克隆官方專案:

git clone https://github.com/facefusion/facefusion.git
cd facefusion

安裝基礎依賴:

pip3 install -r requirements.txt

接著安裝 onnxruntime-gpu:

pip3 install onnxruntime-gpu

ONNX Runtime-GPU 是一個高效能的推理引擎,它能夠執行使用 ONNX (Open Neural Network Exchange) 格式表示的機器學習模型。 關鍵在於“GPU”部分,這意味著它專門針對 NVIDIA 的圖形處理器 (GPU) 進行最佳化,以實現比在 CPU 上執行模型更快的速度和更高的效率。

注意預設安裝的onnxruntime-gpu版本是19.2,它專門是為cuda12適配的。

安裝 tensorrt 庫:

pip3 install tensorrt==10.4.0 --extra-index-url https://pypi.nvidia.com

這裡是安裝 tensorrt 的python3.11執行庫

最後安裝torch:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

注意字尾是cu124,而不是cu118或者cu121

安裝成功後,進入 python3.11 的終端:

>>> import onnxruntime as ort  
>>> print(ort.get_available_providers())  
['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']

如果三種後端支援都被列印出來了,分別是 cpu、cuda以及Tensorrt 那麼說明配置和安裝都成功了。

執行命令:

python3 facefusion.py run

進入換臉主介面:

由於有了Tensorrt的加持,也支援實時換臉,進入攝像頭換臉介面:

python3 facefusion.py run --ui-layouts webcam

攝像頭換臉效果:

最後,需要注意的是,FaceFusion3.0.0需要本地安裝ffmpeg軟體:

winget install -e --id Gyan.FFmpeg

相關文章