Study

    Quantization은 무엇일까?

    Quantization 알아보기 Quantization이란? Quantization, 한국말로 양자화. Quantization의 사전적 의미는 분야마다 다르게 해석될 수 있는데, 물리에서는 '어떤 연속적인 양을 이산적인 양으로 만드는 것', 수학이나 신호 처리에서는 '아날로그 신호를 특정 대표값으로 나타내어 디지털 신호로 변환하는 것'이라고 정의한다. 넓은 의미로 '어떤 측정된 양을 기본 단위로 치환하는 것'라고 볼 수 있다. 딥러닝에서 Quantization이란? 그렇다면 딥러닝에서 Quantization은 어떤 의미로 해석될까? 딥러닝에서 Quantization은 일반적으로 사용하는 floating point precision보다 낮은 bitwidths로 tensor를 저장하는 기술을 의미한다. 예컨..

    pydantic을 사용하여, 안정성 높이기

    Before start Overview pydantic은 Python type hints를 사용하여 데이터의 유효성을 검사하는 라이브러리이다. 파이썬에서 타입 힌트는 말 그대로 변수 타입에 대한 힌트일 뿐, 다른 타입을 사용한다고 해서 문제가 발생하지는 않는다. 이런 세상 쉽게 사는 파이썬에게 pydantic은 런타임에서 타입 힌트를 강제하고, 유효하지 않으면 error를 발생시킨다. pydantic 공식 document에서는 다음과 같이 소개하고 있다. Data validation and settings management using Python type annotations. pydantic enforces type hints at runtime, and provides user friendly er..

    BentoML로 모델 서빙하기

    이 게시글은 "BentoML - v1.0.5" 기준으로 작성되었습니다. Model Serving 이란 MLOps는 모델 관리, 모델 배포, 모델 서빙, 모니터링 등 다양한 요소로 구성되어 있습니다. 이 글에서는 모델 배포와 서빙을 중점적으로 살펴보겠습니다. 모델 서빙이란, 머신러닝 모델을 사용할 수 있도록 배포 혹은 API를 제공하는 것을 의미합니다. 즉, 실질적으로 개발된 머신러닝 모델의 예측값을 사용자에게 전달해주는 것으로 생각할 수 있습니다. 그렇다면, 모델을 서비스하기 위해서는 어떤 방법이 가장 좋을까요? 정답은 없습니다. 사용하는 환경에 따라서 모델들을 독립적으로 배포하거나 자주 변경할 필요가 있을 수 있습니다. 적은 컴퓨팅 자원으로 효율적으로 처리할 필요가 있는 경우도 있고, 반대로 실시간에 ..

    객체지향 프로그래밍

    면접에서 가장 기본적인 질문 중에 하나, "객체지향 프로그래밍이 뭔가요?". 정말 기본 중의 기본이지만, 막상 대답하고자 하니 말문이 막혔다. 꼬리에 꼬리를 무는 질문들이 쏟아져 나오는 질문이니 만큼, 제대로 알아둘 필요가 있는 주제인 것 같다. 이번 기회에 한번 확실하게 짚고 넘어가도록 하자. 객체지향 프로그래밍 (Object Oriented Programming) 객체지향 프로그래밍이란? 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 이를 활용하여 프로그래밍하는 것을 의미한다. 기존의 프로그램이 순차적으로 동작하는 것과는 다르게 객체들 간의 유기적인 상호작용을 통해서 프로그램이 동작하는 것이 특징이다. 대표적인 객체지향 프로그래밍 언어로는 Java가 있고 대표적인 절차적 프로그래밍 언어로는 ..

    Inductive Bias란 무엇일까?

    머신러닝에서 Bias는 무슨 의미일까? Inductive Bias라는 용어에서, Bias라는 용어는 무엇을 의미할까? 딥러닝을 공부하다 보면, Bias과 Variance를 한 번쯤은 들어봤을 것이다. Bias는 타겟과 예측값이 얼마나 멀리 떨어져 있는가, 그리고 Variance는 예측값들이 얼마나 퍼져있는가를 의미한다. 따라서 Bias가 높은 경우 데이터로부터 타겟과의 연관성을 잘 찾아내지 못하는 과소적합(Underfitting) 문제가 발생하고, Variance가 높은 경우에는 데이터의 사소한 노이즈나 랜덤한 부분까지 민감하게 고려하는 과적합(Overfitting) 문제가 발생한다. 여기서, Bias를 학습 알고리즘의 잘못된 가정에 의하여 발생하는 오차라고도 하는데, 잘못된 가정에 의하여 데이터에서 중..

    딥러닝의 핵심, 역전파

    역전파(Back Propagation)란 무엇일까? 역전파의 의미 우선 역전파의 정의에 대해서 알아보자. 역전파는 신경망의 각 노드가 가지고 있는 가중치(Weight)와 편향(Bias)을 학습시키기 위한 알고리즘으로, 딥러닝에 있어서 가장 핵심적인 부분이라고 할 수 있다. 목표(Target)와 모델의 예측 결과(Output)가 얼마나 차이가 나는지 확인하고 그 오차를 바탕으로 가중치와 편향을 뒤에서부터 앞으로 갱신해가는 것을 의미한다. 역전파란 명칭도 바로 이처럼 뒤에서부터 다시 앞으로 거슬러 올라간다는 것에서 나온 것이다. 비결이 뭐야? 역전파가 딥러닝에 있어서 중요하다는 점은 알겠다. 도대체 어떤 방법으로 학습을 진행하고 또 가중치를 갱신하기 위해 어떤 방법으로 이 복잡한 신경망을 계산할 수 있는 것..

    [자료구조] 대표적인 자료구조 정리

    면접을 보면서 느꼈던 점은 자료구조와 알고리즘은 기본적인 것이라고 생각하는데, 막상 대답하고자 하면 명확하지 않았던 경우가 많았던 것 같다. 이번 기회에 확실히 공부해서 기초를 단단히 해서 보다 논리적으로 문제를 해결하고 싶다. 저번 글에서 자료구조에 대한 전반적인 내용을 다뤘다면, 이번에는 대표적인 자료구조들을 살펴보고 각각의 장단점과 특징을 비교해보자. 배열 (Array) 배열은 가장 기본적인 데이터 구조다. 배열은 인덱스(Index)와 인덱스에 해당하는 요소(Element)로 구성된다. 특징 길이가 고정되어 생성된다. (정적 메모리 할당) Random Access를 지원한다. 즉, 인덱스를 통해서 각 요소에 직접 접근할 수 있는 특징이 있다. 배열은 논리적 순서와 물리적 순서가 일치한다. 인접한 메..

    [자료구조] 자료구조? 왜 그렇게 중요할까

    자료구조란? 자료구조를 왜 알아둬야 할까? 자료구조는 컴퓨터과학에서 알고리즘과 함께 가장 중요한 기초이론이다. 왜 중요할까? 정의를 한번 살펴보면, 자료구조란 데이터에 편리하게 접근하고, 변경하기 위해서 데이터를 저장하거나 조직하는 방법을 말한다. 다시 말해서, 데이터를 얼마나 효율적으로 저장 관리하고 메모리를 절약하거나 실행시간을 단축시키는 등에 목적을 두고 있다는 것이다. 자료구조의 특징 작업의 효율성, 추상화, 재사용성을 증가시키기 위하여 상황에 따른 적절한 자료구조를 선택할 필요가 있다. 대규모 데이터를 관리 및 활용하는 경우에는 특히 더 중요하다고 볼 수 있다. (1) 효율성 : 상황에 맞는 자료구조를 사용하면 데이터 처리의 효율성이 높아진다. 예를 들어, 사람의 이름과 전화번호 쌍의 데이터가 ..