Rngd 의 실질적인 최대 전력 소비

S/W : Furiosa-opt 0.7.0

H/W : RNGD x4

Furiosa-opt를 활용하여 RNGD 아키텍처에서 H/W 버닝 툴을 만들고 있습니다. (시스템 안전성 검증용)

초기 구상은 GPU 버닝 커널처럼 레지스터에 의미 없는 값을 두고 ALU만 돌리는 방식을 생각했었습니다.

다만 실제로 작성해보니 Contraction Engine (CE) 구조상 피연산자 하나(TRF)는 상주 재사용이 가능하지만 나머지 하나는 반드시 DM에서 스트리밍해야 하는데, 그 스트리밍 타일이 DM 슬라이스에 묶여 contraction당 Time step의 갯수가 제한되고, contraction마다 붙는 고정 파이프라인 비용을 그 이상 상각할 수 없어 연산 유닛 사용률이 81%에서 포화되는 것으로 보입니다.

추가적으로 시도해보았던, “같은 주소를 반복해서 재사용” 하는, 방안은 Fetch Engine API상 불가능 한 것 같습니다 ?!? (불확실)

의문사항은 contract 유닛에 100% 로드를 걸 수 있다고 가정해도, 위 코드의 상황 (53.3 TMAC/s, 로드율 81% 수준) 을 보았을 때, RNGD 카드 한 장의 최대 전력소모는 150W를 넘지 않을 것으로 보입니다.

혹 furiosa 내부에서 안정성을 확인하기 위한 버닝 툴이 있을까요 ? 그리고 spec sheet상 RNGD의 TDP가 180W 인데 해당 TDP까지 밀어붙일 수 있는 방법이 있을까요 ?

Update_0918 : 코드를 좀 더 수정했더니 CE에서 최대 이론치의 95%로드를 걸 수 있게 되었습니다. 이 때 약 150W 내외를 RNGD의 최대 전력소모로 인지해도 되는 상황일까요 ?

안녕하세요?

경험을 공유 드리면, prefill과 유사한 연산 위주로만 실행되는 embedding, reranker 모델들을 furiosa-llm으로 실행하는 경우 180~200W 이상도 흔히 볼 수 있었습니다. 참고되실까 하여 말씀 남겨봅니다.

최현식 드림

호…그렇군요. 공유 감사합니다.

저는 무조건 native 커널이 좀 더 로드를 걸기 쉬울 것 같다고 생각했는데, 말씀하신 부분을 모사하는 더미 모델을 만들어서 해당 방향으로도 시도해보겠습니다.

4 Likes

감사합니다. ALU만 사용하는 것이 아니라, 메모리 I/O 까지 사용하여야 TDP 그 이상을 사용할 수 있음을 확인하였습니다.

조언해주신 방향대로, prefill 동작을 모사한 커널을 통하여 약 248W 수준의 전력을 소모하는 커널을 작성하였습니다.

4 Likes

의도한 결과를 얻으셨다니 축하드립니다.