ex) 위의 결과는 gpt-j 모델의 mlperf inference 수행 중, 온도가 72도에 도달하여,
혹, 발열로 인한 고장이 생길 것을 예방하기 위해 중단한 사례입니다.
해당 온도가 operating 온도로 괜찮은지 확인하고 싶습니다. 또한, operating 온도의 범위(range)를 알고 싶습니다.
여러 process가 동시에 RNGD를 사용할 때 문제가 발생했습니다. 혹시 RNGD를 사용하고 있는 process를 보호하고 다른 process가 호출(call)되거나 혹은 방해(interrupt)하지 않도록 하는 방법이 있을까요?
ex) RNGD가 연결된 하나에 서버에 하이라이트 된 두 pc에서,
**gpt-j 모델과 llama-3.1-8B model을 동시에 돌렸는데,**
=> 메모리 interrupt(?)과 같은 문제가 생겨, **furiosa-smi info 명령어를 실행했을 때 모든 condition이 N/A error**로 표시되어 졌습니다.
=> 그리고 이를 해결하고자 **cold rebooting을** 수행하여 복구했습니다.
** 혹시, 해당 error가 생길 때마다 매번 이렇게 문제를 해결해야 할까요?
프레임워크로 파이토치 or onnx을 지원하고 있던데,
혹시, bert/gpt-j 등의 모델을 artifact.json 형식이 아닌, onnx 형식 혹은 pytorch 형식으로 [RNGD] npu에 그대로 올려서 inference를 수행할 수 있을까요?
(만약, 컴파일 과정에서 병렬화 과정이 생략되면 inference mlperf benchmark 수행은 어려울까요?)
여러 process가 동시에 RNGD를 사용할 때 문제가 발생했습니다. 혹시 RNGD를 사용하고 있는 process를 보호하고 다른 process가 호출(call)되거나 혹은 방해(interrupt)하지 않도록 하는 방법이 있을까요?
장치는 다른 프로세스에서 원래 중복으로 열지 못하는 것이 의도입니다. 이 부분은 제가 한번 확인 해본 뒤에 업데이트를 다시 드리겠습니다.
프레임워크로 파이토치 or onnx을 지원하고 있던데,
혹시, bert/gpt-j 등의 모델을 artifact.json 형식이 아닌, onnx 형식 혹은 pytorch 형식으로 [RNGD] npu에 그대로 올려서 inference를 수행할 수 있을까요?
(만약, 컴파일 과정에서 병렬화 과정이 생략되면 inference mlperf benchmark 수행은 어려울까요?)
Pytorch 모델을 컴파일해서 실행할 수 있습니다. 이 인터페이스는 현재 아직 개발이 진행 중인 기능으로 아직 문서 등을 통해 공개되지는 않았지만 실험적으로 들어가 있습니다. 실험적이기 때문에 모든 모델이 컴파일 및 최적으로 실행되지는 않습니다. 내일 정리해서 공유 드려보겠습니다.
더불어서 몇 가지 추가 질문 드리고 싶습니다.
질문이 좀 많은 것 같은데, 이해해주시면 감사드리겠습니다.
경로(path)
furiosa-mlperf 명령어 이용해서 Bert 모델 inference 수행하였습니다.
(시나리오: offline, 모드: accuracy-only)
accuracy-only 모드를 수행하고 나면, mlperf-result(summary, log-trace ...) 파일들은 지정한 경로에 저장됩니다.
그런데 아시다시피 현재 furiosa에서 제공하고 있는 command를 통해서는,
evaluation을 수행할 수 없어서, mlcommons/inference에서 해당 결과값을 이용해서 평가를 수행하고 있는데 gpt-j나 llama경우는 mlperf-result(summary, log-trace ...) 뽑아낼 수 있으나,
bert의 경우, f1점수를 뽑아보려면 prediction.json(mlcommons/inference 기준) 파일이 필요합니다. 그런데, 해당 결과물이 저장되는 default값을 찾을 수가 없습니다.
* 1.1-해당 결과물이 저장되는 경로를 알려주시거나 혹은,
* 1.2-evaluation 결과 값을 얻을 수 있는 방법에 대해서 알려주시면 감사드리겠습니다.
온도(temperature)
온도와 관련해서 일전에 올린 문제는 현재 답변을 준비해주시고 있는 것으로 알고 있습니다. 그것과 더불어서 추가적으로,
2.1- the clock freqency ?
2.2- 일반적인 the average power?
2.3- the idle power?
해당 3가지 답변을 요청드립니다.
2번에 대한 답변 드립니다.
우선 RNGD에서 HBM의 Operating Temperature는 ~105도 입니다.
일반적으로 RNGD 내의 FW가 온도를 모니터링하고 온도에 따라 동작 속도를 throttlin하고 (예. 80도 이상일 경우 frequency를 조정), 115도를 넘어가면 동작을 종료시킵니다.
따라서 일반적으로 사용자가 직접 모니터링하고 종료시킬 필요는 없을 것입니다.
추가적으로 clock frequency는 내부적으로 DVFS에 의해 동작하여 사용자가 직접적으로 clock frequency를 알기는 어렵습니다.
일반적인 average power는 사용하는 모델에 따라 다릅니다만, llama 3.1을 mlperf와 같이 최대 load로 동작시킬 경우 현재 180W 정도 소모합니다.
(이후 릴리즈에서 지속적인 에너지 효율 향상이 있을 예정입니다)
idle power는 idle 상태에서 furiosa-smi로 확인하실 수 있으며, 현재는 약 38W 정도입니다.
말씀해 주신 predictions.json 이 inference/language/bert/accuracy-squad.py at v4.1 · mlcommons/inference · GitHub 이 라인에서 인자로 지정하고 있는 값이 맞을까요?
: 네 맞습니다
아 그런데, 제가 질문 드린 것은 furiosa-mlperf를 수행한 뒤,
bert 모델 inference를 통해 도출된 prediction.json이 어느 경로에 저장되는지 알고 싶은 것입니다.
mlcommon inference를 이용하면,
build/result 경로에서 predictions.json 찾을 수 있는데,
furiosa-mlperf를 이용해 얻는 inference 결과값 중에서 해당 predictions.json 파일을 어디서 확인할 수 있을 지에 대한 질문입니다.
mlcommon inference를 이용하면,
build/result 경로에서 predictions.json 찾을 수 있는데,
혹시 accuracy check 없이 inference 를 수행하기만 해도 predictions.json 이 나온다는 말씀이실까요? mlcommons 의 스크립트에서 mlperf 수행 후 자동으로 accuracy check 도 수행해서 build/result/predictions.json 이 생성된 것으로 보입니다.
accuracy-squad.py 를 수행하실 때 --out_file=predictions.json 를 인자로 주시거나 mkdir -p build/result 후 mlperf를 실행해 주실 수 있으실까요? out_file 인자를 통해 만들어지는 predictions.json 은 accuracy squad.py 입장에서 입력으로 받는 것이 아니라 결과물 출력을 위한 경로입니다.
mlcommons/**inference를 통해 accuracy-squad.py 파일을 돌리기 위해서, input 파일을 furiosa-mlperf를 통해 도출된 "log.json"파일을 입력 값으로 넣어, running하면 “자동” build/result 경로가 생성되고,
그 파일 내부에 predictions.json(result 파일)이 생성되면서,
해당 파일(accuracy.py)에 연동된(imported) evaluate_v1.1.py이 runing되면서,
결과 값이 아래 그림과 나옵니다!!!