빌드한 engine 모델을 사용하기 위해 trtexec 엔진을 사용해야 할 일이 생겼는데 설치 하려고 하니 환경이 섞이는게 싫어서 도커 이미지를 사용해서 설치하는 방법을 찾아보게 되었다.원하는 버전의 도커 이미지를 사용해서 컨테이너를 생성하면 해당 버전의 tensorrt를 사용할 수 있다. https://docs.nvidia.com/deeplearning/frameworks/container-release-notes/ TensorRT Release Notes - NVIDIA DocsThe TensorRT container is an easy to use container for TensorRT development. The container allows you to build, modify, and e..
ChatGPT를 비롯한 LLM(대형 언어 모델)의 등장은 개발 패러다임 자체를 바꿔 놓았다.이제는 코드를 작성하거나 문서를 요약하는 일을 넘어서 서비스 운영, 정보 검색, 의사 결정 보조까지 모델이 참여할 수 있다. 하지만 현실적인 문제는 많다.“모델이 사내 문서를 검색하게 하고 싶다.”“LLM이 계산·데이터베이스·외부 API를 이용하도록 하고 싶다.”“문서를 유사도 기반으로 검색한 뒤 답변하게 하고 싶다.”“대화형 서비스니까 사용자의 이전 맥락을 기억해야 한다.”이런 기능은 GPT API만으로는 만들기 어렵기 때문에 LangChain이 등장하게 되었다.LangChain은 LLM을 기반으로 실질적인 애플리케이션을 만들 수 있게 해주는 프레임워크이다. 단순히 챗봇을 넘어서 “지능형 도구”를 만들기 위한 표..
Large Language Model(LLM)은 뛰어난 생성 능력을 가졌지만 근거가 없는 내용을 “그럴듯하게” 만들어내는 Hallucination(환각) 문제가 존재한다.이 문제를 해결하고 기업 문서, PDF, 내부 지식 기반의 정확한 답변을 만들기 위한 기술이 있는데, 바로 RAG(Retrieval-Augmented Generation)이다. 1️⃣ RAG란?말 그대로 Retrieval(검색) + Generation(생성) 의 조합으로 LLM이 “모르는 내용”을 추측해 말하는 대신 외부 지식베이스(문서, Database, PDF, 소스코드 등)에서 관련 정보를 검색하여 그 실제 내용을 LLM 입력(prompt)에 추가해 답변을 생성하는 구조이다.LLM이 답변을 생성할 때,관련 정보를 외부 지식 베이스에..
딥러닝 모델 경량화 기법 중 하나인 양자화(Quantization)는 딥러닝 모델의 숫자 표현을 줄여 모델을 더 작고, 빠르고, 효율적으로 만드는 것으로 flat32를 int8로 바꿔 모델을 경량화 할 수 있다. 양자화의 종류에는 크게 두가지가 있다.1. PTQ(Post-Training Static Quantization)- 학습 없이 양자화가 가능하며 calibration 데이터로 scale/zero point를 측정한다. 빠르고 간단히 양자화가 가능하지만 정확도 손실 가능성이 높다.2. QAT(Quantization Aware Training)- 학습 중에 양자화 효과를 반영하는 것으로 훈련으로 손실이 보정이 되어 정확도 손실이 적다. 그 중 QAT를 적용 해 볼 일이 있어 간단히 알아보고 적용 해 ..
FiftyOne은 컴퓨터 비전 분야의 데이터셋을 효과적으로 관리하고 분석할 수 있도록 돕는 오픈소스 툴이다.해당 툴을 사용하면 이미지 및 비디오 기반 데이터셋을 시각화하고 모델 예측 결과를 평가하며 잘못된 라벨을 쉽게 탐지할 수 있다. 1. FiftyOne 설치fiftyOne 설치apt install libcurl4 opensslapt install libcurl4-openssl-devpip install fiftyonepip install fiftyone-db-ubuntu2204 quickstartimport fiftyone as foimport fiftyone.zoo as fozdataset = foz.load_zoo_dataset("quickstart")print(dataset)sample = da..
Yolo 모델에 대해서 톺아볼 일이 있었는데 간단 요약 글을 포스팅 하면서 다시 한번 정리를 한번 해 보려고 한다. 객체 감지는 이미지나 비디오 내의 객체를 식별하고 위치를 찾는 computer vision task이다.객체 감지 알고리즘은 single shot detection과 two shot detection으로 나눌 수 있다. two shot detection 알고리즘은 객체를 감지하는데 두 단계 프로세스를 사용한다. 첫번째 단계에서는 잠재적으로 객체를 포함할 수 있는 bounding box를 제안을 한다. 두번째 단계에서는 box 내 객체 클래스를 분류하기 위해 제안된 영역을 합성 신경망을 통해 실행을 한다.two shot detection 알고리즘의 대표적인 예료는 R-CNN, Fast R-C..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️8.1 어텐션의 구조seq2seq를 한층 더 강력하게 하는 어텐션 메커니즘 아이디어를 소개한다.이 어텐션이라는 메커니즘 덕분에 seq2seq는 필요한 정보에만 주목할 수 있게 된다. ◾ 8.1.1 seq2seq의 문제점seq2seq에서는 Encoder가 시계열 데이터를 인코딩한다. 인코딩된 정보를 Decoder로 전달하고 Encoder의 출력은 고정 길이의 벡터였다.고정 길이 벡터라 함은 입력 문장의 길이에 관계없이 항상 같은 길이의 벡터로 변환한다는 뜻이다.현재의 Encoder는 아무리 긴 문장이라도 고정 길이의 벡터로 변환하지만 이는 필요한 정보가 벡터에 다 담기지 못하..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 7.1 언어 모델을 사용한 문장 생성◾ 7.1.1 RNN을 사용한 문장 생성의 순서앞 장에서의 LSTM 계층을 이용한 언어 모델은 아래 그림처럼 생겼다. 언어 모델은 다음과 같은 확률분포를 출력한다.언어 모델은 지금까지 주어진 단어들에서 다음에 출현하는 단어의 확률분포를 출력한다. 이 결과를 기초로 다음 생성하기 위해서는 확률이 가장 높은 단어를 선택하는 방법을 떠올릴 수 있다.확률이 가장 높은 단어를 선택할 뿐이므로 결과가 일정하게 정해지는 결정적인 방법이다. 또 확률적으로 선택하는 방법도 있다. 각 후보 단어의 확률에 맞게 선택하는 것으로 확률이 높은 단어는 선택되기 쉽..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. 요즘에는 앞 장의 단순한 RNN 대신 LSTM이나 GRU라는 계층이 주로 쓰인다. RNN이라고 하면 앞 장의 RNN이 아니라 LSTM을 가리키는 경우도 흔하다.LSTM이나 GRU에는 게이트라는 구조가 더해져 있는데 이 게이트 덕분에 시계열 데이터의 장기 의존 관계를 학습할 수 있다. ◼️ 6.1 RNN의 문제점RNN은 시계열 데이터의 장기 의존 관계를 학습하기 어렵다. BPTT에서 기울기 소실 혹은 기울기 폭발이 일어나기 때문이다. ◾ 6.1.1 RNN 복습RNN 계층은 시계열 데이터인 xt를 입력하면 ht를 출력한다. 이 ht는 RNN 계층의 은닉 상태라고 하여 과거 정보를 저장..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 5.1 확률과 언어 모델◾ 5.1.1 word2vec을 확률 관점에서 바라보다지금까지 살펴본 신경망은 피드포워드라는 유형의 신경망이다. 피드포워드란 흐름이 단방향인 신경망을 말한다.입력 신호가 다음 층(중간층)으로 전달되고 그 신호를 받은 층은 그다음 층으로 전달하고 다시 다음 층으로.. 식으로 한 방향으로만 신호가 전달된다.시계열 데이터를 잘 다루지 못하는게 단점이기에 순환 신경망(RNN)이 등장하게 된다. CBOW 모델이 출력할 확률식은 다음과 같이 된다.위 식을 교차 엔트로피 오차에 의해 유도한 결과는 다음처럼 쓸 수 있다.CBOW 모델의 학습으로 수행하는 일은 위의 손..