クイズ: 実行プロバイダと誤差の蓄積
한국어 원문으로 표시합니다.
세션을 만들 때 이 기계에 없는 실행 공급자를 목록 맨 앞에 넣었다. 실측으로 무슨 일이 일어나는가?
- 세션 생성이 예외로 실패해 프로그램이 멈춘다
- 그 공급자가 자동으로 설치되어 내려받기가 시작된다
- 예외 없이 세션이 만들어지고 남은 공급자로 조용히 떨어져 돌아간다
- 모델이 열리기는 하지만 추론을 부르면 그때 실패한다
배포 로그에 남겨야 할 것으로 가장 알맞은 것은?
- 세션의 get_providers() 가 돌려준 목록
- 코드에 적어 둔 요청 목록
- 설치된 onnxruntime 패키지 이름
- get_available_providers() 의 목록만
실행 공급자가 정하는 것을 가장 정확히 말한 것은?
- 모델 전체를 어느 장치에서 돌릴지를 하나로 고른다
- 모델 파일의 연산자 집합 판을 올려 준다
- 노드마다 누가 맡을지를 정하고, 아무도 안 맡은 노드는 CPU 가 맡는다
- 가중치를 어느 자료형으로 저장할지 정한다
같은 모델에 같은 입력을 넣어도 기계마다 다른 수가 나올 수 있는 까닭으로 이 실습이 드는 것은?
- 모델 파일이 기계마다 다르게 압축되기 때문이다
- 지원 연산자가 달라 그래프가 다르게 쪼개지면 계산 순서가 달라지기 때문이다
- 난수 씨앗이 기계마다 다르게 정해지기 때문이다
- int8 의 표현 범위가 기계마다 다르기 때문이다
정수 판에서 층 경계 오차를 재려고 중간 텐서를 그래프 출력으로 꺼내려 한다. 안전한 선택은?
- QuantizeLinear 의 출력을 float 로 선언해 꺼낸다
- 모든 노드의 출력을 빠짐없이 출력 목록에 넣는다
- 선형 연산자가 받아 드는 쪽 텐서를 꺼낸다
- 출력은 그대로 두고 로그 수준을 올려 중간값을 찍는다
다섯 겹 모델의 층 경계 상대 오차를 재었더니 줄었다 늘었다 하며 전체로는 3.7배가 되었다. 이 결과를 어떻게 다루어야 하는가?
- 단조롭지 않으므로 측정이 잘못된 것이니 다시 재야 한다
- 전체 증가 배수만 남기고 층별 값은 버린다
- 층마다 오차가 고르게 커진다는 통념으로 바꿔 적는다
- 그대로 표로 남긴다. 어느 층에서 크게 뛰었는지가 손볼 층을 가리킨다