본문 바로가기

IT

애플의 온디바이스 ai

 

안드는 램이 많이 필요하고 왜 아이폰은 램이 많이 안 필요할까요?

애플은 혼자 외계기술 넣어서 갑자기 온디바이스 하는 걸까요? 

 

요약해서 답만 말하면

Yes. 애플은 혼자 외계기술 넣습니다.

 

애플이 작년에 개발자들에게 ios에서 ai를 할 수 있는 툴들을 설명하면서 

업계에서는 첨단에 있는 기술들을 보여줬어요. 

 



온디바이스 ai를 위해서는 효율적인 모델 구조와 압축된 테크닉들이 필요합니다. 




애플에서 구현하고 있는 3가지는 프루닝, 양자화, 팔레트화입니다. 

 



프루닝을 하면 모델을 1/6로 줄일 수 있습니다. 



양자화는 실수로 표현되는 걸 정수화, 혹은 그 보다 낮은 precision의 실수로 바꾸는 거죠. 




팔레트화는 캐시 개념으로 룩 업 테이블을 만들어서 사용합니다. 




이론적으로 양자화를 하면 1/8까지 모델을 줄일 수 있습니다. 




이게 다 아이폰에 자체 내장해 놓은 기술들입니다. 






압축을 하면 정확도가 떨어지는 거 아니냐고 생각하실 수 있는데 

실제로 정확도가 떨어집니다. 




프루닝도 10% 밖에 안되고



양자화도 6비트 까지 밖에 안됩니다. 



하지만 여기서 애플이 한걸음 더 나아갔습니다. (중요한 건 여기입니다!)



실제로 압축을 해도 성능이 떨어지지 않게 보상해줄 수 있는 것을 발견했습니다. (엄청난 발견!) 



75%까지 프루닝을 해도 손실이 거의 없는 것을 알게되었죠. 




그래서 예제로 보여주는데 원래 이 모델의 크기는 50M였지만



최적화를 했더니 3M로 줄어버렸어요. 1/15로 줄이는 외계기술! 모델 크기가 작은 만큼 속도는 더 빨라집니다. 

 



개발자들은 어떻게 쓰냐고요?

걍 xcode에 ai 모델 올리면 알아서 최적화 해주게 만들었습니다.

우리 NPU가 알아서 계산해줍니다. 

 

--

 

안타깝게도 이 기술들은 다른 폰 회사들에서는 할 수 없는 것들이죠. 특히 안드는 용량을 너무 많이 잡아먹죠. 

 

 

1. 소프트웨어로 구현하는 거랑, 하드웨어로 구현하는 건 다르다고.. 

 

2. Song Han은 training 할 때 프루닝 하라고 했지, 이미 만들어진 모델에 프루닝을 하라고 한 적이 없습니다. 

5살때 뇌가 ㅈㄴ 커넥션이 많아졌다가 줄어드는 거에 착안해서 프루닝 아이디어를 얻었다고 했죠.

그런데, 애플은 이미 만들어진 ResNet 모델에 프루닝을 하고 있습니다..