Why Kubernetes? 본격적으로 Docker와 Kubernetes를 배우기에 앞서, Container와 Orchestration에 대해서 알아보자. 어떠한 서비스를 배포하는데, 모든 서비스가 특징이 다르다. A서비스는 많은 저장 용량이 필요하고, B서비스는 GPU가 필요하다. 이 도커를 담는(?) 컨테이너들의 capa를 관리하는 것이 오케스트레이션인데, 이 오케스트레이션 툴중 가장 많이 사용되는 것이 바로 Kubernetes이다. 오케스트레이션이 없다면, 엔지니어가 각자의 모델 학습을 하려면 엔지니어끼리 스케줄을 공유하여 선점해야하고, GPU 자원을 실시간으로 모니터링하고 공유해야 한다. 이를 정해진 룰에 따라서 관리해주는 것이 컨테이너 오케스트레이션이다. Docker 실습 환경 내 코드가 doc..
머신러닝 모델이 학습을 하려면, 학습할 수 있는 포맷의 데이터를 제공해야 한다(e.g. 카테고리 값들을 수치화). 일관된 전처리는 머신러닝 파이프라인에서 매우 중요한 요소이며, TFX 컴포넌트에서는 어떻게 제공 되는지 알아보자. TFT(Tensorflow Transform) TFT를 사용하면 전처리 단계를 텐서플로 그래프로 구성할 수 있다. TFT를 통해서 전처리를 표준화 해야하는 이유는 크게 3가지이다. 전체 데이터셋의 context에서 효율적으로 전처리 : TFT는 백그라운드에서 데이터를 통과하는 path를 관리하는 피처를 제공한다. 전처리 단계를 효과적으로 확장 : TFT는 내부적으로 아파치 빔을 사용하여 전처리 알고리즘을 실행하기에, 빔 백엔드에서 전처리를 배포할 수 있다. 잠재적인 학습-서빙 왜..
Minibatch 모델에 넣기 위한 코퍼스의 최종 모양을 만들어줘야 할텐데, 그 tensor의 모양은 다음과 같다. tensor를 보면, 몇 가지 문제점이 보인다. vocab이 sparse해지기 때문에 메모리의 낭비가 생긴다. 따라서 vocab을 one-hot vector가 아닌 index로 처리하는게 좋다. 문장의 길이가 다 다르기 때문에 극단적인 예로 어떤 문장은 두 단어로, 어떤 문장은 100단어로 구성되어있다면 오른쪽의 padding 토큰의 차이가 극명해지고, 계산 낭비가 이뤄진다. 2번의 문제를 해결하기 위해서는 length를 sorting하는 방법이 있다. 그리고 미니배치의 순서를 shuffling하면 된다. 실습 with TorchText 먼저 터미널을 통해서 tsv파일을 shuffle해줘야..
먼저 토큰의 길이에 따라서 어떤 특징을 가지는 지 생각해보자. "나는 오늘 아침에 테니스를 치고, 시리얼을 먹었다."는 문장을 예시로 들자. 토큰의 길이가 길다는 것은 이 문장 자체를 유니크한 토큰으로 가정한다는 것이고, 그 만큼 전체 문서에서 등장할 가능성이 희박해진다. 반면에 토큰의 길이가 짧아지면 "나/는/오늘/아침/에/테니스/를/치/고/,/시리얼/을/먹/었다/." 와 같이 분절되는 것이고, 아침, 테니스 등의 명사와 조사등은 전체 문서에서 자주 등장하여 count가 올라갈 가능성이 높다(즉, 희소성이 낮아진다). 희소성이 높다는 뜻은 OoV(Out of Vocabulary)가 늘어난다는 뜻이다. 즉, 모델의 입장에서 "이게 뭐여? 처음보는 단어(문장)인데?" 라고 인식하게 될 것이다. 모델의 성능..
Garbage in, Garbage Out 머신러닝을 경험한 사람이라면 지겹도록 들은 말일 것이다(대부분은 Garbage가 안들어가도 Garbage Out되지만). 데이터를 선별하고 검증하지 않으면 모델이 제대로 학습하지 못한다. 데이터 검증은 파이프라인의 데이터가 피처 엔지니어링 단계에서 기대하는 데이터인지 확인하는 작업이다. 아래와 같은 작업들이 데이터 검증이라고 할 수 있다. 여러 데이터셋을 비교 시간이 지나 업데이트되면서 데이터가 변경될 때도 표시 이상치를 확인하거나 스키마(schema)의 변경 확인 새 데이터셋과 이전 데이터셋의 통계가 일치하는지도 확인 TFDV(Tensorflow Data Validation)를 통한 데이터 검증 TFX가 제공하는 패키지인 TFDV을 통하여 데이터를 검증해보자...
텍스트 데이터 레이블 텍스트 데이터의 레이블은 다양한 형태로 존재할 수 있다. csv파일(comma-separated variables)은 문장 내의 comma와 혼동 될 수 있어서, tsv(tab-separated variables)를 권장한다. text classification의 경우는 클래스와 sentence가 tab으로 구분된 형태로 존재한다. Class Sentence positive !빠른 배송 좋아요 negative 이게뭐야?진짜이게뭐야?리뷰보고구매했는데!나원참! negative 제품 손잡이가 생각보다 너무약해 사용하기가 불편합니다. ... ... sentence ↔ sentence의 경우 1번과 같은 형태, 또는 대응되는 다른 파일로도 저장되어 있을 수 있다. Sentence Segmen..
TFX로 파일이나 서비스에서 데이터를 수집하는 컴포넌트를 실행할 수 있다. 데이터를 split하고, 여러 데이터를 결합하고, 다양한 형태의 데이터를 수집하는 전략들을 알아보자. 데이터를 컴포넌트로 전달하기 전에 다음의 절차를 따른다. 데이터를 데이터셋(train, valid)로 split TFRecord 파일로 변환 TFRecord는 데이터셋 스트리밍에 최적화된 형식이다. TFRecord는 대량의 데이터를 빠르게 다운로드하거나 write할 때 쓰는데 최적화 되어있고, 모든 TFX 컴포넌트에서 사용한다. TFRecord로 변환, 혹은 기존의 TFRecord 가져오기 tfx.components의 CsvExampleGen 패키지를 통해서 기존의 .csv 파일을 tf.Example로 변환할 수 있다. impor..
본격적으로 자연어처리를 위한 데이터 전처리 파이프라인에 대해서 알아보자. 크게 다음과 같은 절차를 따른다. 데이터(Corpus) 수집 데이터 정제 레이블링 (optional) Tokenization(분절) : 형태소 분석기를 활용하여 분절 수행 Subword Sefmentation (optional) Batchify : 사전 생성 및 word2index Corpus 정제 코퍼스는 문장들로 구성된 데이터셋, 말뭉치를 말한다. 코퍼스는 크게 전형적인 노이즈를 제거(전각문자 등)해야 한다. 전각 문자는 Unicode 이전의 한중일 언어를 예로 들 수 있는데, 쉽게 얘기하면 standard가 아닌 legacy라고 생각하면 될 것 같다. 대소문자는 가능하면 통일하는 것이 좋다. NYC, n.y.c는 같은 뉴욕 시..
- Total
- Today
- Yesterday
- productmanager
- MLOps
- 파이프라인
- 인공지능
- Kubernetes
- deeplearning
- DDUX
- 스타트업
- productowner
- 쿠버네티스
- dl
- docker
- 전처리
- 머신러닝파이프라인
- mlpipeline
- 딥러닝
- torch
- 도커
- nlp
- 자연어처리
- ML
- Oreilly
- Bert
- container
- Tennis
- PO
- 머신러닝
- productresearch
- pmpo
- PM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |