엣지 디바이스에서 딥러닝 모델을 테스팅하면 문제되는 부분들이 있다.
첫 번째 문제는, 한 번 메모리에 올린 후 한 개의 테스트밖에 하지 못한다는 점이다. 두 번째 문제는 딥러닝 모델을 메모리에 올리는 데 시간이 오래 걸려서, 테스팅이 매우 느리다는 점이다. 실제로 Jetson Xavier AGX 에서 MobileNet v2 모델을 tf.load_model
API 를 통해 메모리에 올리는데 5분이라는 시간이 걸린다! 케이스 하나를 테스트하기 위해 5분이라고 상상해 보라.
첫 번째 문제는 unittest
모듈의 TestCase
클래스를 사용하는 순간 깔끔하게 해결된다(from1). 두 번째 문제는 장기저장장치-메모리 사이의 병목에 의해 일어나는 문제로(참고1:비슷한 문제), 목(Mock)을 통해 간접적으로 해결될 수 있다. 딥러닝 모델을 모킹(mocking) 할 수 있으면 이 문제도 해결된다.
from
- ‣
supplementary
- [ba2.3.a0.1.1.1. title:
머신러닝 파이프라인같이 유닛 간 의존관계가 복잡한 경우, 모킹(Mock, Mocking) 등을 이용해 실질적으로 코드를 고립시키는 고립 테스트([Unit test Solitary test](https://janghoo.notion.site/Solitary-test-f197b2715c934c468baac434ef950409))를 해볼 수 있다.](https://janghoo.notion.site/ba2-3-a0-1-1-1-title-814b45c7272646a88b2ec8d6296c1df7)
- [ba2.3.a0.1.1.2. title:
머신러닝 파이프라인같이 유닛 간 의존관계가 복잡한 경우, 의존하는 모듈이 잘 돌아갈 것이라고 전제하고 테스트하는 통합 유닛 테스트([Unit test Sociable unit test](https://janghoo.notion.site/Sociable-unit-test-cc7d61eca49c4a51a60736bdefa6548d))를 해볼 수 있다.](https://janghoo.notion.site/ba2-3-a0-1-1-2-title-8709a4b0998645a68086de08a4fec1a8)
참고
- 535p, 흔히 발생하는 문제로 통합 테스트에 필요한 환경을 구축할 때 계산 비용이 너무 비싸거나, 너무 오랜 시간이 소요될 경우가 있다. 예를 들어, 통합 테스트를 진행하기 위해 데이터베이스 프로세스를 시작하고 데이터베이스가 모든 인덱스를 메모리에 읽어올 때까지 기다려야 할 수도 있다.