본문 바로가기

반응형

분류 전체보기

(72)
[AI 경량화] tfmot 패키지에 대해 알아보자 (tensorflow-model-optimization) 서 론 tfmot 패키지는 TF Team에서 공식으로 배포하고 있는 AI 모델 최적화 패키지이다. 아직 버전이 0.3.0 밖에 안 되는 beta 버전이지만, 이거라도 없으면 직접 AI 경량화를 진행해야 하는 만큼, 상당히 유용하다. 사실 AI경량화 혹은 최적화 부문은 시장도 너무 작고, 원하는 기업도 별로 없다. 국내에선 대표적으로 매스프레소의 콴다 앱, AI 경량화 전문 노타 등을 제외하고는, 대기업에서조차 AI 경량화 인재에 국한하여 채용을 진행하지는 않는다. (2020.06.20 기준) 사실 생각해보면 CVPR2020 1,467건의 Accepted Paper 중 고작 23건만이 AI Optimization에 관한 것이었으니… 당연할지도 모른다. 하지만 작년 CVPR2019에서 10건밖에 AI Opt..
[AI 경량화] AI 경량화, 혹은 AI Optimization이란 무엇인가? 서 론 학계가 매년 수도 없이 많은 AI 논문을 출판한다. 그리고 대부분의 석박들은 더 높은 정확도와, 더 낮은 손실도, 더 복잡한 AI 학습 알고리즘을 연구하는 데에 몰입하고 있다. 그러다보니, 현업에서는 더 정확도 높은 이미지 분류, 음성인식 모델을 얻게 되었지만, 동시에 모델 사이즈가 너무 커지고 임베디드 기기에는 도저히 온보딩할 수 없는 지경에 이르렀다. 참고로, 모델 사이즈와 정확도가 모두 만족된다는 최신 SOTA(state-of-the-art) 모델인 EfficientNet의 경우도, (심지어 가장 모델 사이즈가 작은 b0 모델의 경우조차) 라즈베리파이의 칩셋인 ARM Cortex-A53에 온보딩할 경우 Inference Time Period가 0.10 [Hz] 정도밖에 나오지 않는다. 10초..
[이메일 대규모 전송] 천 명, 만 명한테 이메일 하나하나 직접 보내지 말자! 대규모/대용량 이메일, 아직도 일일이 한 명 한 명한테 직접 보내세요? 세상에는 일을 열심히 하는 사람, 못하는 사람, 잘하는 사람, 등등 여러 사람이 있지만, 굳이 내가 '일을 힘들게 하는 사람'이 될 필요는 없다. 마케팅 업무나 기타 업무를 하다보면, 혹은 행사를 하다 보면, 가끔 대규모 이메일을 전송해야할 때가 있다. 적게는 몇 천 명 단위에서 많게는 몇 만 명 그 이상 단위까지 올라가는데, 이걸 일일이 다 보내고 앉아있으려면 내 손모가지도 분질러지고 인생도 기구해진다. 그럴 때는 아래 프로그램을 이용해보자. 파이썬 이메일 대규모 전송 프로그램 # Gmail Sender # 아래 라이브러리들은 파이썬 기본 내장 라이브러리이므로 별도의 설치가 필요 없습니다. from email.mime.text im..
[Buildroot] 임베디드 리눅스 구조의 이해 서 론 빌드루트, Buildroot(혹은 하드웨어 스케일에 따라서는 Yocto)라는 툴을 다루는 것은 임베디드 리눅스의 영역, 그것도 BSP(Board Support Package)의 영역이다. 분명 학부 때는 전기공학과를 다니며, 펌웨어 코딩과 자동제어를 주로 프로그래밍했었는데, 어느 새 취업을 하고 보니 임베디드 리눅스의 영역도 다루게 되고 있다. Buildroot에 대해 다루기 전에, 임베디드 리눅스의 구조에 대해 알아볼 필요가 있다. Buildroot라는 툴을 다루려면 최소한 그 안에서 어떤 동작을 하는지, 그 구조는 어떻게 되는지에 대해서는 알아야 하기 때문이다. 임베디드 리눅스를 구성하는 가장 중요한 요소들은 무엇일까? 그것에 대해 매우 간략히 정리해보도록 하겠다. 리눅스, Linux Embe..
[Git] Github, Git Commit Rule (깃허브 커밋 룰) 서 론 깃허브(Github)를 위시한 각종 Git들이 포트폴리오 대용으로까지 활용되는 시대에, 사실 너무 많은 git들이 막 올려지고 있고, 너무 많은 사람들이 제대로 된 Git Commit Rule이 무엇인지는 커녕 존재하는지조차 모르고 있다. 사실 필자도 Git Commit Rule이란 것이 뭔지 한동안은 몰랐었다. (심지어 아직도 너무 마이너한 커밋은 아주 짧은 커밋 메시지만을 (initial commit 등) 작성한 채 push 해버린다.) 무엇보다 귀찮기 때문이 아닐까, 라는 핑계거리는 있지만…… N모사의 한 책임개발자는 "신입을 뽑을 때 깃 커밋 메시지만 봐도 뽑아야할지 말아야할지 알 수 있다"라고 말한 것을 들은 적이 있다. 사실 취업에 있어서, 경력이 아닌 신입 채용에서 가장 중요한 것은 ..
[Golang] 자체 MQTT 브로커 서버 구현 - 2 기능 상세 설명 [Golang] 자체 MQTT 브로커 서버 구현 - 1 MQTT Broker 서버 구현 MQTT 브로커 서버 구현에 앞서, 만약 이론적 배경이 궁금하다면 아래 포스트를 먼저 읽고 오는 것을 추천한다. 링크 1: MQTT 원리 이론편 [통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜.. underflow101.tistory.com 위 1편에서 설명된 자체 MQTT Broker 서버의 기능 상세 설명을 하려 한다. 이를 위한 소스 코드는 아래 깃허브에서 확인 가능하다. underflow101/goMQTTServer MQTT Broker Server in Golang. Contribute to underflow101/goMQTTServer development by crea..
[Golang] 자체 MQTT 브로커 서버 구현 - 1 MQTT Broker 서버 구현 MQTT 브로커 서버 구현에 앞서, 만약 이론적 배경이 궁금하다면 아래 포스트를 먼저 읽고 오는 것을 추천한다. 링크 1: MQTT 원리 이론편 [통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜) 이란? - 1 (이론편) 이 론 MQTT(Message Queueing Telemetry Transport)는 2016년 국제 표준화 된 (ISO 표준 ISO/IEC PRF 20922) 발행-구독(Publish-Subscribe) 기반의 메시지 송수신 프로토콜이다. 작은 코드 공간이 필요하거나 네.. underflow101.tistory.com 링크 2: MQTT - Arduino(ESP32) 실전편 [통신 이론] MQTT, MQTT Protocol (MQTT..
[Keras] SqueezeNet Model (CNN) 이란? - 2 (실전편, 소스코드 첨부) 모델 및 환경 지난 포스트 마지막 부분에 첨부했던 모델 알고리즘 흐름도이다. CVPR SqueezeNet 논문에 첨부된 알고리즘 흐름도이며, 해당 흐름도를 기준으로 코드를 작성하였다. 딥러닝 모델 설계를 위해 tensorflow backend를 사용하는 Keras를 활용했다. 아래 코드를 돌리기 위해 필요한 사진 데이터셋은 아래 링크에서 "catsAndDogsSmall" 폴더를 통째로 다운받아 활용할 수 있다. underflow101/MLDL Machine Learning & Deep Learning Source Code. Contribute to underflow101/MLDL development by creating an account on GitHub. github.com 해당 코드를 실행하기 위..

반응형