사상 리더
ML에서 숨겨진 위험을 피하는 방법: iOS에서 비명시적 함정을 탐색하는 방법

ML이 필요합니까?
기계 학습은 패턴을 식별하는 데 탁월합니다. 깨끗한 데이터셋을 수집하는 데 성공하면 일반적으로超人적인 성능의 ML 모델을 구축하는 데 시간 문제일 뿐입니다. 이는 분류, 회귀, 이상 감지와 같은 클래식 작업에서 특히 그렇습니다.
당신이 비즈니스 문제를 해결하기 위해 ML을 사용할 준비가 되면, ML 모델이 어디서 실행될지 고려해야 합니다. 일부에서는 서버 인프라를 실행하는 것이 합리적입니다. 이는 ML 모델을 비공개로 유지하여 경쟁자가 따라가기 어렵다는 장점이 있습니다. 또한 서버는 더 다양한 모델을 실행할 수 있습니다. 예를 들어, ChatGPT로 유명한 GPT 모델은 현대적인 GPU가 필요하므로 소비자 기기는 고려할 수 없습니다.另一方面, 인프라를 유지하는 것은 khá 비용이 많이 듭니다. 또한 사용자 데이터를 원격 서버로 보내서 처리할 수 없는 경우도 있습니다.
그러나 iOS 기기를 사용하여 ML 모델을 실행하는 것이 합리적이라고 가정해 보겠습니다. 무엇이 잘못될 수 있나요?
플랫폼 제한
메모리 제한
iOS 기기는 데스크톱 기기에 비해 사용 가능한 비디오 메모리가 훨씬 적습니다. 예를 들어, 최근의 Nvidia RTX 4080 Ti에는 20 GB의 사용 가능한 메모리가 있습니다.另一方面, 아이폰 14 프로에는 6 GB의 RAM이 있습니다. 또한, 메모리의 반을 초과하는 경우, iOS는 앱을 종료하여 운영 체제가 반응하는 것을 보장합니다. 이는 신경망 추론을 위해 2-3 GB의 사용 가능한 메모리만 사용할 수 있음을 의미합니다.
연구자들은 일반적으로 모델을 정확도보다 메모리 사용량을优先하여 훈련합니다. 그러나 속도와 메모리 사용량을 최적화하는 방법에 대한 연구도 있습니다. 따라서 덜 요구되는 모델을 찾거나 훈련할 수 있습니다.
네트워크 레이어(연산) 지원
대부분의 ML 및 신경망은 잘 알려진 딥 러닝 프레임워크에서 来自であり, Core ML 모델로 변환됩니다. Core ML은 Apple (AAPL ) 이 작성한 추론 엔진으로, 다양한 모델을 Apple 기기에서 실행할 수 있습니다. 레이어는 하드웨어에 최적화되어 있으며 지원되는 레이어 목록은 khá dài입니다. 따라서 이것은 훌륭한 시작점입니다. 그러나 Tensorflow Lite와 같은 다른 옵션도 있습니다.
Core ML이 무엇이 가능한지 보는 가장好的 방법은 이미 변환된 모델을 보는 것입니다. 예를 들어, Netron과 같은 뷰어를 사용하여 모델을 볼 수 있습니다. Apple은 일부 공식적으로 지원되는 모델을 나열합니다. 또한 커뮤니티 주도 모델도 있습니다. 지원되는 연산의 전체 목록은不断으로 변경되므로 Core ML Tools의 소스 코드를 보는 것이 도움이 될 수 있습니다. 예를 들어, PyTorch 모델을 변환하려면 필요한 레이어를 찾을 수 있습니다.
또한, 일부 새로운 아키텍처에는 일부 레이어에 대한 手書き CUDA 코드가 포함될 수 있습니다. 이러한 경우, Core ML이事前に 정의된 레이어를 제공할 수 없습니다. 그러나 自分의 구현을 제공할 수 있습니다. 이를 위해서는 GPU 코드를 작성하는 데熟練한 엔지니어가 필요합니다.
전체적으로, 여기서 가장好的 조언은 모델을 Core ML로 早く 변환하는 것입니다. 모델을 훈련하기 전에 변환하는 것이 좋습니다. 모델을 변환하지 못한 경우, DL 프레임워크 또는 Core ML Tools 변환기의 소스 코드를 수정하여 유효한 Core ML 모델을 생성할 수 있습니다.
검증
추론 엔진 버그
모든 가능한 레이어 조합을 테스트하는 방법은 없습니다. 따라서 추론 엔진에는 항상 일부 버그가 있습니다. 예를 들어, Core ML에서 확장된 합성곱이 너무 많은 메모리를 사용하는 경우, 이는 구현에 문제가 있음을 나타낼 수 있습니다. 또 다른 일반적인 버그는 일부 모델 아키텍처에 대한 잘못된 모델 출력입니다.
이 경우, 연산의 순서가 중요할 수 있습니다. 활성화와 합성곱의 순서 또는 残差 연결의 순서에 따라 결과가 달라질 수 있습니다. 모든 것이 제대로 작동하는지 보장하는唯一한 방법은 모델을 가져와서 의도된 기기에서 실행한 다음 데스크톱 버전과 비교하는 것입니다. 이를 위해서는 최소한 부분적으로 훈련된 모델이 필요합니다. 그렇지 않으면, 숫자 오류가 누적될 수 있습니다. 최종 훈련된 모델은 제대로 작동하지만, 기기와 데스크톱에서 결과가 다를 수 있습니다.
정밀도 손실
아이폰은 추론을 위해 반정밀도 정확도를 광범위하게 사용합니다. 일부 모델은 부동소수점 표현에서 少ない 비트로 인해 정확도에 영향을 받지 않을 수 있습니다. 그러나 다른 모델은 영향을 받을 수 있습니다. 모델을 데스크톱에서 반정밀도와 함께 평가하여 테스트 메트릭을 계산함으로써 정밀도 손실을 근사할 수 있습니다. thậm chí 더好的 방법은 실제 기기에서 모델을 실행하여 모델이 의도된대로 정확한지 확인하는 것입니다.
프로파일링
다른 아이폰 모델에는 다양한 하드웨어 기능이 있습니다. 최신 기기에는 신경 엔진 처리 유닛이 개선되어 전체 성능을 크게 높일 수 있습니다. 이러한 유닛은 특정 연산에 최적화되어 있으며, Core ML은 CPU, GPU, 신경 엔진 간에 작업을 지능적으로 분산할 수 있습니다. Apple GPU도 시간이 지남에 따라 개선되었습니다. 따라서 아이폰 모델 간에 성능이 다를 수 있습니다. 지원되는 최소 기기에서 모델을 테스트하여 최대 호환성과 이전 기기에서 허용 가능한 성능을 보장하는 것이 좋습니다.
또한, Core ML은 중간 레이어와 연산을 제거하여 성능을 크게 개선할 수 있습니다. 또 다른 요인은 때때로 데스크톱에서 성능이 더 나쁜 모델이 실제로 iOS에서 추론을 더 빠르게 할 수 있다는 것입니다. 따라서 다양한 아키텍처를 실험하는 데 시간을 투자하는 것이 좋습니다.
さらに, Xcode에는 Core ML 모델을 위한 템플릿이 포함된 훌륭한 Instruments 도구가 있습니다. 이는 모델 추론을 느리게 하는 요인에 대한 더 자세한 통찰력을 제공할 수 있습니다.
결론
누구도 iOS용 ML 모델 개발에서 가능한 모든 함정을 예측할 수 없습니다. 그러나 일부 오류는 무엇을 찾아야 하는지 알고 있다면 피할 수 있습니다. 모델을早く 변환하고, 검증하고, 프로파일링하여 모델이 제대로 작동하고 비즈니스 요구 사항에 부합하는지 확인하십시오. 또한 위에 설명된 팁을 따라서 가능한 한 빨리 성공을 보장하십시오.












