본문 바로가기

Programming

(51)
예외 처리 - 소프트웨어를 처리하면서 예외(exception)처리는 필수 사항이다. - 어떤 상황에서든 에러는 발생할 수 있고, 개발자는 이 에러에 대응책을 마련해 두어야 한다. - Nest는 프레임 워크 내에 예외 레이어를 두고 있다. - 애플리케이션을 통틀어 제대로 처리하지 못한 예외를 처리하는 역할을 한다. - 이는 우리가 아무런 작업을 하지 않아도, 기본 예외 처리기가 예외를 잡아서 유저가 이해하기 쉬운 형태로 변환하여 전송한다. $ curl http://localhost:3000/error { "statusCode":500, "message":"Internal Server Error" } - Nest는 예외에 대한 많은 클래스를 제공한다. - 위 결과를 보면 에러가 발생했을때 응답을 Json 형식으로 바꿔..
내장 로거 - 개발 도중 이슈가 발생했을 때, 이슈 증상만으로 원인을 파악하기에는 시간과 노력이 많이 들고, 코드를 다시 역추적하면서 이해하는 데에 어려움이 따른다. - 이슈가 발생한 지점과 콜 스택이 함께 제공된다면 빨리 해결이 가능할 것이다. - 또 어떠한 기능이 많이 사용되는지에 대한 내용과 같이 유저의 사용 패턴을 분석하는데에도 로그log를 활용할 수 있다. - 예시로 서비스를 실행하면 서버 콘솔에는 아래 그림과 같은 로그가 출력된다. - 이미 각 컴포넌트에서는 내장 로거를 이용하여 로그를 출력하고 있다. - 내장 Logger 클래스는 @nest/common 패키지로 제공된다. - 로깅 옵션을 조절하면 다음과 같이 로깅 시스템의 동작을 제어할 수 있다. 1. 로깅 비활성화 2. 로그 레벨 지정: log,er..
5장. 지식 증류 기반 BERT 파생 모델 사전 학습된 BERT를 사용하는데 따르는 문제는 계산 비용이 많이 들고 제한된 리소스로 모델을 실행하기가 매우 어렵다는 것이다. 사전 학습된 BERT는 매개변수가 많고 추론에 시간이 오래 걸려 휴대폰과 같은 edge 디바이스에서 사용이 어렵다. 즉, 상용화 레벨에서는 BERT를 바로 사용하는 것은 쉽지 않다. 지식 증류 : 소금물에서 증류하여 소금을 얻어내듯이, 지식 증류(knowledge distilation)는 커다란 Teacher 모델에서 엑기스만 뽑아내어 작은 Student 모델로 전달하는 방식. 5.1 지식 증류 소개 - 지식 증류 : 사전 학습된 모델의 동작을 재현하기 위해 소형 모델을 학습시키는 모델 압축 기술. - 교사-학생 학습(teacher-student learning)이라고도 함. ..
파이프와 유효성 검사 1. 파이프 - 요청이 라우터 핸들러로 전달하기 전에 요청 객체를 변환할 수 있는 기회를 제공 - 미들웨어의 역할과 비슷함. - 보통 파이프는 2가지 목적으로 사용된다. 변환(transformation) : 입력 데이터를 원하는 형식으로 변환 유효성 검사(validation) : 입력 데이터가 사용자가 정한 기중에 유효하지 않은 경우 예외 처리 - @nest/common 패키지에는 여러 내장 파이프가 마련되어 있음 ValidationPipe ParseIntPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe DefaultValuePipe ParseIntPipe, ParseBoolPipe, ParseArrayPipe, ParseUUIDPipe - 전달된 인수의 타입을 검사하..
4.4장-Span BERT Abstract - BERT의 파생 모델 중 하나. - 토큰을 무작위로 마스킹하는 대신, 연속된 임의의 범위를 마스킹하고, 마스킹 된 전체 내용을 예측하도록 범위 경계 표현을 훈련함으로써 BERT를 확장한다. - SpanBERT는 question-answering이나 coreference resolution와 같은 span selection task(텍스트의 범위를 예측하는 태스크)에 주로 사용된다. coreference resolution - 임의의 개체(entity)를 표현하는 다양한 명사구들을 찾아 연결해주는 자연어처리 문제. 1. Introduction - BERT와 같은 Pre-Training 방법은 individual words나 subword units을 mask하는 self-supervis..
4-3장. ELECTRA ELECTRA - ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accuratley) - BERT의 파생 모델 중 하나로 MLM 태스크를 사전 학습에 사용하는 대신 교체한 토큰 탐지(replaced token detection)라는 태스크를 사용해 학습을 진행함. 1. Abstract - 기존 BERT를 비롯한 많은 language model들은 입력을 마스크 토큰으로 치환하고 이를 치환 전의 원본 토큰으로 복원하는 MLM 태스크를 통해 pre-training을 한다. - 이는 bidirectional으로 효과적이지만 example당 15%만 학습하기 때문에 상당한 계산 비용이 발생한다. - 하지만 이러한 모델들은 학..
3장. BERT 활용하기 1. 사전 학습된 BERT 모델 탐색 - 2장에서 MLM과 NSP를 사용하여 BERT를 사전학습시키는 방법을 배웠다. - 그러나 BERT를 처음부터 사전 학습시키는 것은 계산 비용이 많이 든다. - 따라서 사전 학습된 공개 BERT 모델을 다운로드해 사용하는게 효과적이다. - 구글은 사전학습된 BERT 모델을 오픈소스로 제공했으며 구글 리서치의 깃허브 저장소(https://github.com/google-research/bert.git)에서 다운로드할 수 있다. - 사전 학습된 모델은 BERT-uncased 및 BERT-cased 형식으로도 제공된다. BERT-uncased 1. 입력 단어를 소문자로 만들어준다. 2. 어떠한 accent marks를 없애준다. MyDrive -> mydrive franç..
2장. BERT 시작하기 1. BERT의 기본 개념 - NLP 분야에서 좋은 성능을 내는 LM. - Transformer 구조를 기반함. - BERT가 성공한 주된 기능은 문맥(context)을 고려하지 않은 word2vec과 같은 임베딩 모델과는 달리, 문맥을 고려한 동적 임베딩 모델이기 때문. * 문맥 기반(context-based) 임베딩 모델과 문맥 독립(context-free)임베딩 모델의 차이 A : He got bit by Python --> 파이썬(뱀)이 그를 물었다. B : Python is my favorite programming language --> 내가 가장 좋아하는 프로그래밍 언어는 파이썬이다. - 두 문장에서 'Python'이라는 단어의 의미가 서로 다르다는 것을 알 수 있다. (A : 뱀을 의미 ,..