Edge AI 전체 Workflow
·
Embedded & Edge AI/개념 정리
Edge AI 시스템은 두 가지 흐름으로 나눠 보면 이해하기 쉽다. 기기에서 매 입력마다 도는 실행 흐름과, 모델을 만들어 기기에 올리고 갱신하는 개발·운영 흐름이다.이전 게시물에서는 on-device, edge, embedded AI가 "어디서 도는가"를 기준으로 용어를 정리했다. 이번 글에서는 "어떤 흐름으로 도는가"를 정리하고, 각 단계에 어떤 최적화 기법이 붙는지 정리한다. 이후 글들은 이 그림의 칸을 하나씩 자세히 채우는 구조다. afondiel의 Edge AI Engineering 레포에 있는 End-to-End Edge AI Stack 그림을 참고해서 글을 작성하였다.순서는 다음과 같다.센서·카메라로 원시 데이터 수집엣지 기기에서 전처리효율적인 AI 모델링최적화된 모델로 추론로컬 판단, 또는..
On-device AI? Edge AI? Embedded AI?
·
Embedded & Edge AI/개념 정리
들어가며세 용어는 "클라우드가 아닌 곳에서 AI를 돌린다"는 점은 같지만, 보는 기준이 서로 다르다. 그래서 같은 시스템을 두고도 글마다 다른 이름으로 부른다. 관련 자료를 찾아보면 세 단어가 거의 같은 뜻으로 섞여 쓰인다. 어떤 용어집은 on-device AI의 다른 이름으로 edge AI와 embedded AI를 함께 나열하고, 반대로 셋을 분명히 구분하는 글도 있다. 앞으로 이 분야를 정리해 나가려면 먼저 용어부터 내 기준으로 정리해 둘 필요가 있다고 생각했다.이 글에서는 여러 자료의 정의를 비교해 보고, 그 위에서 내가 쓸 기준을 정한 뒤, 내가 하고 있는 작업이 어디에 해당하는지 짚어본다.세 용어의 정의Edge AI데이터가 생기는 곳 근처에서 추론하는 방식이다. 여기서 "엣지"는 네트워크 개념이..
[C++] Lec 26. String Literals in C++
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 문자열이 "문자의 배열 + 널 종료 문자"라는 것을 배웠습니다. 이번 포스팅은 그 문자열을 코드에 직접 적는 것, 즉 문자열 리터럴(String Literal) 을 더 깊이 파고듭니다.문자열 리터럴이란 코드에 큰따옴표로 적은 "Cherno" 같은 값을 말합니다. 단순해 보이지만, 그 뒤에는 메모리 어디에 저장되는가, 왜 const여야 하는가, 문자 하나가 몇 바이트인가 같은 중요한 이야기가 숨어 있습니다. 이번 글에서는 문자열 리터럴의 정체와 주의점, 그리고 다양한 문자 인코딩까지 살펴봅니다.Chapter 1 : 문자열 리터럴이란 : 그리고 왜 const인가 Chapter 2 : 리터럴은 어디에 저장되는가 Chapter ..
[MIT 6.5940] Lec 4. Quantization (Part I)
·
Computer Science/Embedded AI
GoalPruning(Lecture 2~3)이 weight의 개수를 줄였다면, Quantization은 weight 하나당 비트 수를 줄인다. 저장 용량은 비트 수 × weight 개수이므로, 둘은 서로 직교(orthogonal)하며 함께 곱셈적으로 결합된다. 폰에서 AI를 돌린다면 십중팔구 quantization을 쓰고 있을 만큼 현대 딥러닝에 핵심적인 기법이다. Quantization도 두 강의(Part I·II)에 걸쳐 다룬다. Part I의 두 축:데이터 타입(numerical types) : 정수(integer), 고정소수점(fixed-point), 그리고 부동소수점 FP32·FP16·BF16·FP8·FP4. 각각 어떻게 표현하고, 정수 vs 부동소수점은 언제 유리한가.신경망 양자화 기법 : K..
[C++] Lec 25. How Strings Work in C++ (and how to use them)
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 같은 타입의 값을 나란히 모은 배열을 다뤘습니다. 이번 포스팅의 주제인 문자열(String) 은 사실 그 배열의 특수한 경우 문자(char)들의 배열 입니다. 배열을 이해했으니 문자열도 자연스럽게 따라옵니다.C++에는 문자열을 다루는 두 가지 방식이 있습니다. C 시절부터 내려온 C 스타일 문자열(char 배열)과, 현대 C++의 std::string 입니다. 이번 글에서는 문자열이 메모리에서 어떻게 동작하는지(핵심은 널 종료 문자), 두 방식의 차이, 그리고 실전에서 어떻게 쓰는지를 살펴봅니다.Chapter 1 : 문자열은 문자의 배열이다. 그리고 널 종료 문자 Chapter 2 : C 스타일 문자열 vs std::st..
[C++] Lec 24. Arrays in C++
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이번 주제는 배열(Array) 입니다. 배열은 같은 타입의 여러 값을 메모리에 나란히 모아둔 것으로, 데이터를 대량으로 다루는 모든 코드의 기본 재료입니다. 배열은 지금까지 배운 두 개념이 만나는 지점입니다. 포인터(배열은 사실 포인터입니다)와 반복문(배열은 반복문으로 훑습니다). 특히 앞서 포인터 편에서 잠깐 본 new int[100]이 무엇이었는지, 이번 글에서 완전히 이해하게 됩니다. 배열의 정체, 포인터와의 관계, 그리고 스택·힙 배열의 차이까지 살펴봅니다.Chapter 1 : 배열이란 무엇인가 : 같은 타입을 나란히Chapter 2 : 배열은 사실 포인터다 Chapter 3 : 스택 배열 vs 힙 배열, 그리고 주의점 Con..
[C++] Lec 23. Visibility in C++
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다. 우리는 지금까지 클래스 편에서 public/private를, 상속 편에서 protected를 다뤘습니다. 이번 포스팅은 이 세 가지 가시성(Visibility), 즉 클래스 멤버가 어디까지 보이고 접근 가능한지를 한자리에 모아 제대로 정리합니다.이 강의에서 Cherno가 특히 강조하는 중요한 포인트가 있습니다. 가시성은 순수하게 객체지향(OOP) 개념일 뿐, 프로그램의 성능이나 동작에는 아무 영향이 없다는 것입니다. 가시성은 컴퓨터가 아니라 사람(개발자)을 위한 것입니다. 이번 글에서는 세 지정자의 차이와, "왜 굳이 접근을 막는가"라는 그 진짜 이유를 살펴봅니다.Chapter 1 : 가시성이란 무엇인가 : 사람을 위한 개념 Ch..
[C++] Lec 22. Interfaces in C++ (Pure Virtual Functions)
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 virtual 키워드로 다형성을 구현하는 가상 함수를 배웠습니다. 이번 포스팅은 그것을 밀어붙인 개념, 순수 가상 함수(Pure Virtual Function) 와 그것으로 만드는 인터페이스(Interface) 입니다. 일반 가상 함수는 부모가 기본 구현을 제공하고 자식이 원하면 재정의했습니다. 순수 가상 함수는 한 걸음 더 나아가, 부모가 구현을 아예 제공하지 않고 "이 함수는 반드시 자식이 구현하라"고 강제합니다. 즉 "규격만 정하고 내용은 비워두는" 것이죠. 이번 글에서는 이 개념이 무엇이고, 왜 강력한지를 살펴봅니다.Chapter 1 : 순수 가상 함수란 무엇인가 Chapter 2 : 인터페이스 — 구현을 강제하는..
[C++] Lec 21. Virtual Functions in C++
·
Skills/C++
Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 상속(Inheritance)을 다루며 "자식은 부모의 한 종류다(is-a)"라는 관계를 배웠습니다. 이번 포스팅은 그 관계를 진짜 강력하게 만들어주는 가상 함수(Virtual Function) 와 다형성(polymorphism) 입니다.핵심 질문은 이것입니다. "부모 타입으로 자식 객체를 가리킬 때, 어느 쪽의 메서드가 호출될까?" 상속만으로는 여기서 원치 않는 결과가 나오는데, virtual 키워드가 이를 해결합니다. 이번 글에서는 그 문제 상황부터, virtual의 동작, 그리고 그것이 메모리(vtable, sizeof)에 미치는 영향까지 살펴봅니다.Chapter 1 : 문제 상황 — 상속만으로는 부족하다 Chapte..
[MIT 6.5940] Lec 3. Pruning and Sparsity (Part II)
·
Computer Science/Embedded AI
GoalLecture 2(Part I)에서 pruning의 네 질문 중 granularity(어떤 단위로)와 criterion(무엇을)을 배웠다. Part II는 나머지 두 질문 + "희소성을 실제 속도로 바꾸는 법"을 다룬다.Pruning Ratio (얼마나 자르나) — 레이어별 비율을 정하는 세 방법: sensitivity analysis · AMC(강화학습) · NetAdapt(규칙 기반).정확도 회복 (어떻게 되살리나) — fine-tuning 전략(learning rate·iterative·regularization), 그리고 Lottery Ticket Hypothesis.System & Hardware 지원 — 희소성을 실제 속도로 바꾸는 세 계열: EIE(weight·activation sp..