insightface icon indicating copy to clipboard operation
insightface copied to clipboard

How to specify gpu

Open wzr0108 opened this issue 1 year ago • 5 comments

face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
    name="",
    root=face_analysis_model_path,
    providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
)
face_analysis.prepare(ctx_id=2, det_size=(640, 640))

gpu0 is used regardless of ctx_id setting

wzr0108 avatar Aug 12 '24 07:08 wzr0108

face_analysis = FaceAnalysis( name="", root=face_analysis_model_path, providers=["CUDAExecutionProvider", "CPUExecutionProvider"], provider_options=[{"device_id": device_id])

ZubairKhan001 avatar Aug 13 '24 13:08 ZubairKhan001

device_id=5

face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
    name="",
    root=face_analysis_model_path,
    providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
    provider_options=[{"device_id": device_id}]
)
face_analysis.prepare(ctx_id=device_id, det_size=(640, 640))

still using gpu0

wzr0108 avatar Aug 15 '24 06:08 wzr0108

when the model is loaded what is the value assigned to device id, 0 or 5?

ZubairKhan001 avatar Aug 15 '24 12:08 ZubairKhan001

i set device_id=5, but the model is loaded into gpu0

wzr0108 avatar Aug 16 '24 05:08 wzr0108

@wzr0108 provider_options and providers should be in equals length, you should get warning for this error. The solution is remove CPUExecutionProvider or add blank dict {} on provider_options

device_id=5

face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
    name="",
    root=face_analysis_model_path,
    providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
    provider_options=[{"device_id": device_id}, {}]
)
face_analysis.prepare(ctx_id=0, det_size=(640, 640))

and actually you don't need device_id on ctx_id, because it supposed for hard switch to CPU if value less than 0

# insightface/model_zoo/arcface_onnx.py
    def prepare(self, ctx_id, **kwargs):
        if ctx_id<0:
            self.session.set_providers(['CPUExecutionProvider'])

rizquuula avatar Jan 06 '25 04:01 rizquuula