[rngd] Furiosa SDK 2024.2 (Beta0) 펌웨어 error 및 온도 관련 문의

[rngd] npu를 사용하면서 몇 가지 error가 발생하여 몇 가지 질문 드립니다.
질문 사항은 다음과 같습니다.

================================================
Questions to FuriosaAI

  1. sudo apt update 를 실행할 때 다음과 같은 오류가 발생했습니다.
Failed to fetch https://furiosa.ai/apt/Packages 404 Not Found [IP: 3.39.33.2 443]


  1. RNGD의 HBM3가 발열로 고장날 수 있다고 해서 RNGD의 Operating Temperature의 범위(range)를 확인하고 싶습니다.
    (제공주신 문서에는 Warboy의 Operating Temperature0~50도라고만 나와 있는 것 같습니다.)
2025-02-19T22:08:56.597140971+09:00  INFO furiosa_generator::scheduler::action_provider:  - [Pipeline 11] decode batch: 128, agments per device (total: 2 devices)
2025-02-19T22:08:56.59870505+09:00  INFO furiosa_generator::scheduler::generator: Starting scheduler loop with config: Schedul_limit: 2, max_processing_samples: 13368, spare_blocks_ratio: 0.22, is_offline: true, prefill_chunk_size: None }
2025-02-19T22:08:56.606860618+09:00  INFO furiosa_mlperf::gpt_j::offline: Starting test ...
^Z
[1]+  Stopped                 furiosa-mlperf gpt-j-offline /data/LLM/mlperf-gpt-j-6b /data/LLM/ju_results --test-mode accuracy-only
(base) juyeon91629@zebra:~$ furiosa-smi info
+------+--------+------------------+------------------+---------+----------+--------------+
| Arch | Device | Firmware         | PERT             | Temp.   | Power    | PCI-BDF      |
+------+--------+------------------+------------------+---------+----------+--------------+
| rngd | npu0   | 2024.2.0+7a11888 | 2024.2.1+de20a9f | 72.29°C | 191.00 W | 0000:ab:00.0 |
+------+--------+------------------+------------------+---------+----------+--------------+

ex) 위의 결과는 gpt-j 모델의 mlperf inference 수행 중, 온도가 72도에 도달하여,
혹, 발열로 인한 고장이 생길 것을 예방하기 위해 중단한 사례입니다.
해당 온도가 operating 온도로 괜찮은지 확인하고 싶습니다. 또한, operating 온도의 범위(range)를 알고 싶습니다.


  1. 여러 process가 동시에 RNGD를 사용할 때 문제가 발생했습니다. 혹시 RNGD를 사용하고 있는 process를 보호하고 다른 process가 호출(call)되거나 혹은 방해(interrupt)하지 않도록 하는 방법이 있을까요?

그림2

ex) RNGD가 연결된 하나에 서버에 하이라이트 된 두 pc에서,
**gpt-j 모델과 llama-3.1-8B model을 동시에 돌렸는데,** 
=> 메모리 interrupt(?)과 같은 문제가 생겨, **furiosa-smi info 명령어를 실행했을 때 모든 condition이 N/A error**로 표시되어 졌습니다. 
=> 그리고 이를 해결하고자 **cold rebooting을**  수행하여 복구했습니다.

** 혹시, 해당 error가 생길 때마다 매번 이렇게 문제를 해결해야 할까요?

  1. 프레임워크로 파이토치 or onnx을 지원하고 있던데,
    혹시, bert/gpt-j 등의 모델을 artifact.json 형식이 아닌, onnx 형식 혹은 pytorch 형식으로 [RNGD] npu에 그대로 올려서 inference를 수행할 수 있을까요?
    (만약, 컴파일 과정에서 병렬화 과정이 생략되면 inference mlperf benchmark 수행은 어려울까요?)

1 Like

안녕하세요? 답변이 늦어 죄송합니다.

여러가지 질문을 주셔서 우선 제가 답변 드릴 수 있는 1, 3, 4번을 답변 드리고 2번의 경우는 담당자 분께 요청 드리겠습니다.

  1. sudo apt update 를 실행할 때 다음과 같은 오류가 발생했습니다.

저희가 제공하는 문서와 다른 APT repository 주소를 사용하고 계신 것 같습니다. 혹시 아래 문서를 참고해서 설정해주실 수 있으실까요?

https://developer.furiosa.ai/latest/en/getting_started/prerequisites.html#setting-up-apt

여러 process가 동시에 RNGD를 사용할 때 문제가 발생했습니다. 혹시 RNGD를 사용하고 있는 process를 보호하고 다른 process가 호출(call)되거나 혹은 방해(interrupt)하지 않도록 하는 방법이 있을까요?

장치는 다른 프로세스에서 원래 중복으로 열지 못하는 것이 의도입니다. 이 부분은 제가 한번 확인 해본 뒤에 업데이트를 다시 드리겠습니다.

  1. 프레임워크로 파이토치 or onnx을 지원하고 있던데,
    혹시, bert/gpt-j 등의 모델을 artifact.json 형식이 아닌, onnx 형식 혹은 pytorch 형식으로 [RNGD] npu에 그대로 올려서 inference를 수행할 수 있을까요?
    (만약, 컴파일 과정에서 병렬화 과정이 생략되면 inference mlperf benchmark 수행은 어려울까요?)

Pytorch 모델을 컴파일해서 실행할 수 있습니다. 이 인터페이스는 현재 아직 개발이 진행 중인 기능으로 아직 문서 등을 통해 공개되지는 않았지만 실험적으로 들어가 있습니다. 실험적이기 때문에 모든 모델이 컴파일 및 최적으로 실행되지는 않습니다. 내일 정리해서 공유 드려보겠습니다.

2 Likes

친절하고 빠른 답변 주셔서 감사합니다.

더불어서 몇 가지 추가 질문 드리고 싶습니다.
질문이 좀 많은 것 같은데, 이해해주시면 감사드리겠습니다. :pray::pray::pray:

  1. 경로(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 결과 값을 얻을 수 있는 방법에 대해서 알려주시면 감사드리겠습니다.
  1. 온도(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 정도입니다.

감사합니다.

1 Like

확인 완료하였습니다.

빠른 답변 정말 감사합니다!!! :slight_smile:

감사합니다!
좋은 하루 되시길 바라겠습니다.

확인 완료하였습니다.

빠른 답변 정말 감사합니다!!! :slight_smile:
1번에 대한 답변도 기다리고 있겠습니다.
(질문 1. 경로(path)에 관련한 답변)

감사합니다!
좋은 하루 되시길 바라겠습니다.

안녕하세요 FuriosaAI 신명근입니다. 먼저 답변이 늦어 죄송합니다.

말씀해 주신 predictions.json 이 inference/language/bert/accuracy-squad.py at v4.1 · mlcommons/inference · GitHub 이 라인에서 인자로 지정하고 있는 값이 맞을까요? 해당 인자는 어떤 파일을 읽기 위해 존재하는 것이 아니라 디코딩된 출력을 어떤 파일에 저장할 지를 지정하기 위해 존재합니다. 따라서 쓰기 권한이 있는 아무 경로를 지정해주시면 됩니다.

현 스크립트에 지정된 값을 그대로 사용하신다면 build/result 디렉토리가 존재하지 않아 에러가 날 수 있을 것 같습니다.

감사합니다.

감사합니다!

말씀해 주신 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 입장에서 입력으로 받는 것이 아니라 결과물 출력을 위한 경로입니다.

감사합니다.

3 Likes

아 맞네요!! 정말 감사합니다!!!

mlcommons/**inference를 통해 accuracy-squad.py 파일을 돌리기 위해서, input 파일을 furiosa-mlperf를 통해 도출된 "log.json"파일을 입력 값으로 넣어, running하면 “자동” build/result 경로가 생성되고,
그 파일 내부에 predictions.json(result 파일)이 생성되면서,
해당 파일(accuracy.py)에 연동된(imported) evaluate_v1.1.py이 runing되면서,
결과 값이 아래 그림과 나옵니다!!!

감사합니다.

3 Likes