안녕하세요
답변주신대로 unset NPU_DEVNAME으로 설정하고나니
warboy*1이 busy라고 오류가 뜨길래 혹시나해서 pod에 npu 2개를 할당해보니 잘됩니다 원래 이렇게 하는 것이 맞을까요?
더불어 궁금한 것이 있는데, NPU_DEVNAME, NPU_NPUNAME, NPU_PENAME 이라는 변수는 어디서 할당하는 것일까요? 적절히 해당 환경변수를 unset 해줄 포인트를 찾고 있습니다.
또 아래 사진은 furiosactl ps 를 입력했을 때의 출력값인데
python -s -c from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=36, pipe_handle=47) --multiprocessing-fork은 'furiosa.runtime.session.async’ sdk에서 호출하는게 맞을까요? 혹시 맞다면 관련 자료가 있는지 궁금합니다.
사용할 수 있는 NPU 장치보다 더 많은 수의 세션을 생성하게 되면 Bush 오류가 발생합니다. 만약 의도한 수만큼 사용하지 않았음에도 해당 오류가 발생을 하였다면 불필요한 세션이 생성되었을 가능성이 있습니다.
(첨부해주신 furiosactl ps 결과 사진에서 NPU 장치가 fusion되어(warboy(2)*1) 2개 사용하고 있는 것으로 확인됩니다, 의도하신 바가 맞으신지요? - 세션이 현재 두개가 열려있는 것으로 보입니다.)
세 환경변수는 furiosa-npu-device-plugin에서 pod에 NPU를 할당할 때 생성해줍니다. container의 entrypoint 역할을 하는 스크립트 등에서 unset을 할 수 있겠지만, 만약 작업하시는 환경에서 기존 환경변수를 unset하는 시점이 모호하다면, NPU_DEVNAME 보다 우선순위가 높은 환경변수인 FURIOSA_DEVICES 를 설정하는 방법이 있습니다. pod manifest에서 다음과 같이 지정할 수 있습니다. 아래와 같이 설정 시, NPU_DEVNAME의 존재 여부나 값은 무시됩니다. (단, SDK 0.10.0 이상 한정)
multiprocessing.spawn 관련은 furiosa-sdk에서 호출하는 것은 아닙니다. 아마도 mlserver 또는 mlserver에서 사용하는 mlflow 내부 동작에 의해 발생하는 것이 아닐까 추측됩니다. parent pid를 통해 어디서 생성된 프로세스인지 확인해보시는 것을 권장드립니다.