mirror of
https://github.com/facefusion/facefusion.git
synced 2026-10-14 17:40:48 +02:00
add amd metric
This commit is contained in:
1 parent
f2f09fc215
commit
ef0bfe81e2
3 files changed
+97
-11
No files matched your search
@@ -8,8 +8,8 @@ import pynvml
|
|||||||
import onnxruntime
|
import onnxruntime
|
||||||
|
|
||||||
import facefusion.choices
|
import facefusion.choices
|
||||||
from facefusion.filesystem import create_directory, is_directory
|
from facefusion.system import detect_static_graphic_devices
|
||||||
from facefusion.types import ExecutionDevice, ExecutionProvider, InferenceOptionSet, InferenceProvider, ValueAndUnit
|
from facefusion.types import ExecutionProvider, InferenceSessionProvider
|
||||||
|
|
||||||
onnxruntime.set_default_logger_severity(3)
|
onnxruntime.set_default_logger_severity(3)
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ def resolve_cache_path() -> str:
|
|||||||
|
|
||||||
|
|
||||||
def resolve_cudnn_conv_algo_search() -> str:
|
def resolve_cudnn_conv_algo_search() -> str:
|
||||||
execution_devices = detect_static_execution_devices()
|
execution_devices = detect_static_graphic_devices()
|
||||||
product_names = ('GeForce GTX 1630', 'GeForce GTX 1650', 'GeForce GTX 1660')
|
product_names = ('GeForce GTX 1630', 'GeForce GTX 1650', 'GeForce GTX 1660')
|
||||||
|
|
||||||
for execution_device in execution_devices:
|
for execution_device in execution_devices:
|
||||||
|
|||||||
+93
-8
@@ -1,10 +1,10 @@
|
|||||||
|
import importlib
|
||||||
import shutil
|
import shutil
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
import pynvml
|
|
||||||
|
|
||||||
from facefusion import state_manager
|
from facefusion import state_manager
|
||||||
from facefusion.types import DiskMetrics, ExecutionDevice, MemoryMetrics, Metrics, NetworkMetrics, ProcessorMetrics
|
from facefusion.types import DiskMetrics, ExecutionDevice, MemoryMetrics, Metrics, NetworkMetrics, ProcessorMetrics
|
||||||
@@ -15,7 +15,7 @@ def get_metrics_set() -> Metrics:
|
|||||||
|
|
||||||
return\
|
return\
|
||||||
{
|
{
|
||||||
'execution_devices': detect_execution_devices(),
|
'execution_devices': detect_graphic_devices(),
|
||||||
'disks': detect_disk_metrics([ drive_path ]),
|
'disks': detect_disk_metrics([ drive_path ]),
|
||||||
'memory': detect_memory_metrics(),
|
'memory': detect_memory_metrics(),
|
||||||
'network': detect_network_metrics(),
|
'network': detect_network_metrics(),
|
||||||
@@ -24,12 +24,23 @@ def get_metrics_set() -> Metrics:
|
|||||||
|
|
||||||
|
|
||||||
@lru_cache()
|
@lru_cache()
|
||||||
def detect_static_execution_devices() -> List[ExecutionDevice]:
|
def detect_static_graphic_devices() -> List[ExecutionDevice]:
|
||||||
return detect_execution_devices()
|
return detect_graphic_devices()
|
||||||
|
|
||||||
|
|
||||||
def detect_execution_devices() -> List[ExecutionDevice]:
|
def detect_graphic_devices() -> List[ExecutionDevice]:
|
||||||
execution_devices : List[ExecutionDevice] = []
|
execution_providers = state_manager.get_item('execution_providers')
|
||||||
|
|
||||||
|
if any(execution_provider in [ 'rocm', 'migraphx' ] for execution_provider in execution_providers):
|
||||||
|
return detect_amd_devices()
|
||||||
|
if any(execution_provider in [ 'cuda', 'tensorrt' ] for execution_provider in execution_providers):
|
||||||
|
return detect_nvidia_devices()
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def detect_nvidia_devices() -> List[ExecutionDevice]:
|
||||||
|
pynvml = importlib.import_module('pynvml')
|
||||||
|
nvidia_devices : List[ExecutionDevice] = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pynvml.nvmlInit()
|
pynvml.nvmlInit()
|
||||||
@@ -38,7 +49,7 @@ def detect_execution_devices() -> List[ExecutionDevice]:
|
|||||||
for device_id in range(device_count):
|
for device_id in range(device_count):
|
||||||
handle = pynvml.nvmlDeviceGetHandleByIndex(device_id)
|
handle = pynvml.nvmlDeviceGetHandleByIndex(device_id)
|
||||||
|
|
||||||
execution_devices.append(
|
nvidia_devices.append(
|
||||||
{
|
{
|
||||||
'driver_version': pynvml.nvmlSystemGetDriverVersion(),
|
'driver_version': pynvml.nvmlSystemGetDriverVersion(),
|
||||||
'framework':
|
'framework':
|
||||||
@@ -96,7 +107,81 @@ def detect_execution_devices() -> List[ExecutionDevice]:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return execution_devices
|
return nvidia_devices
|
||||||
|
|
||||||
|
|
||||||
|
def detect_amd_devices() -> List[ExecutionDevice]:
|
||||||
|
amdsmi = importlib.import_module('amdsmi')
|
||||||
|
amd_devices : List[ExecutionDevice] = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
amdsmi.amdsmi_init()
|
||||||
|
handles = amdsmi.amdsmi_get_processor_handles()
|
||||||
|
|
||||||
|
for handle in handles:
|
||||||
|
driver_info = amdsmi.amdsmi_get_gpu_driver_info(handle)
|
||||||
|
vram_usage = amdsmi.amdsmi_get_gpu_vram_usage(handle)
|
||||||
|
activity = amdsmi.amdsmi_get_gpu_activity(handle)
|
||||||
|
|
||||||
|
amd_devices.append(
|
||||||
|
{
|
||||||
|
'driver_version': driver_info.get('driver_version', ''),
|
||||||
|
'framework':
|
||||||
|
{
|
||||||
|
'name': 'ROCm',
|
||||||
|
'version': driver_info.get('driver_version', '')
|
||||||
|
},
|
||||||
|
'product':
|
||||||
|
{
|
||||||
|
'vendor': 'AMD',
|
||||||
|
'name': amdsmi.amdsmi_get_gpu_asic_info(handle).get('market_name', '')
|
||||||
|
},
|
||||||
|
'video_memory':
|
||||||
|
{
|
||||||
|
'total':
|
||||||
|
{
|
||||||
|
'value': vram_usage.get('vram_total', 0) // (1024 * 1024 * 1024),
|
||||||
|
'unit': 'GB'
|
||||||
|
},
|
||||||
|
'free':
|
||||||
|
{
|
||||||
|
'value': (vram_usage.get('vram_total', 0) - vram_usage.get('vram_used', 0)) // (1024 * 1024 * 1024),
|
||||||
|
'unit': 'GB'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'temperature':
|
||||||
|
{
|
||||||
|
'gpu':
|
||||||
|
{
|
||||||
|
'value': amdsmi.amdsmi_get_temp_metric(handle, amdsmi.AmdSmiTemperatureType.EDGE, amdsmi.AmdSmiTemperatureMetric.CURRENT) // 1000,
|
||||||
|
'unit': 'C'
|
||||||
|
},
|
||||||
|
'memory':
|
||||||
|
{
|
||||||
|
'value': 0,
|
||||||
|
'unit': '%'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'utilization':
|
||||||
|
{
|
||||||
|
'gpu':
|
||||||
|
{
|
||||||
|
'value': activity.get('gfx_activity', 0),
|
||||||
|
'unit': '%'
|
||||||
|
},
|
||||||
|
'memory':
|
||||||
|
{
|
||||||
|
'value': activity.get('umc_activity', 0),
|
||||||
|
'unit': '%'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
amdsmi.amdsmi_shut_down()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return amd_devices
|
||||||
|
|
||||||
|
|
||||||
def detect_disk_metrics(drive_paths : List[str]) -> List[DiskMetrics]:
|
def detect_disk_metrics(drive_paths : List[str]) -> List[DiskMetrics]:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
amdsmi==7.0.2
|
||||||
numpy==2.2.6
|
numpy==2.2.6
|
||||||
onnx==1.19.1
|
onnx==1.19.1
|
||||||
onnxruntime==1.23.2
|
onnxruntime==1.23.2
|
||||||
|
|||||||
Reference in new issue
Block a user