Quiz: What Freezes at Export Time
한국어 원문으로 표시합니다.
받는 쪽 런타임이 낡았다고 해서 모델의 opset 번호만 낮춰 다시 저장했다. 가장 가능성이 큰 결과는?
- 연산자 정의도 함께 낮은 판으로 바뀌어 그대로 실행된다
- onnx.checker 가 먼저 거절해 잘못을 바로 알려 준다
- 검사기는 통과하는데 런타임이 그 연산자의 구현을 찾지 못해 멈춘다
- 파일 크기가 줄어드는 대신 정확도가 조금 떨어진다
onnx.checker.check_model(model) 과 check_model(model, full_check=True) 의 차이로 맞는 것은?
- full_check 는 모양 추론까지 돌려 곱셈이 성립하지 않는 MatMul 을 잡아낸다
- full_check 는 런타임 세션을 열어 커널이 있는지까지 확인한다
- full_check 는 가중치 값의 범위가 정상인지 통계로 검사한다
- full_check 는 파일을 다시 직렬화해 바이트가 같은지 대조한다
어떤 파일을 열었더니 graph.input 에 이름이 다섯 개인데 런타임 세션은 입력을 하나만 달라고 한다. 왜인가?
- 런타임이 쓰지 않는 입력을 성능을 위해 자동으로 잘라 냈다
- 파일이 손상되어 입력 선언 네 개가 읽히지 않았다
- 나머지 네 개는 출력이 입력 목록에 잘못 적힌 것이다
- 나머지 네 개가 initializer 에도 있어 파일 안의 값으로 채워지기 때문이다
producer_name 이 비어 있는 ONNX 파일을 받았다. 이 사실의 의미로 가장 정확한 것은?
- 실행에는 지장이 없지만 사고가 났을 때 출처를 되짚을 근거가 사라진다
- 그 파일은 onnx.checker 를 통과할 수 없다
- 런타임이 기본 공급자를 고르지 못해 성능이 떨어진다
- IR 버전이 4 미만이라는 뜻이므로 다시 내보내야 한다
모델이 열리는 opset 의 하한과 상한은 각각 무엇이 정하는가?
- 둘 다 모델을 만든 라이브러리의 판이 정한다
- 하한은 모델이 쓰는 연산자가 정의된 판이 정하고, 상한은 런타임이 여는 판이 정한다
- 둘 다 런타임 판이 정하므로 모델과는 무관하다
- 하한은 IR 버전이 정하고 상한은 파일 크기가 정한다
등록되지 않은 도메인의 연산자가 들어 있는 파일을 검사기와 런타임에 각각 물으면?
- 검사기와 런타임 모두 거절한다
- 검사기와 런타임 모두 통과시키고 실행 중에 틀린 값이 나온다
- 검사기는 통과시키고 런타임이 등록된 연산자가 아니라며 멈춘다
- 검사기는 거절하고 런타임은 그 노드를 건너뛰고 실행한다