-
8주차 학습 내용 (AI 서비스 개발 기초)NAVER AI TECH 2023. 4. 25. 14:56
(1강) 소프트웨어 엔지니어링
소프트웨어는 [프로그램, 문서, 데이터]를 포괄한다.
좋은 소프트웨어는 높은 응집도(모듈 내 교류)와 낮은 결합력(모듈 간 교류)을 가진다.
좋은 소프트웨어는 테스트와 문서화가 체계적으로 잘 되어 있다.
(2강) 파이썬 버전 관리
버저닝에는 대표적으로 세 가지 방법이 있다.
1. CalVer (Calendar Version) Ubuntu 20.04
2. SemVer (Semantic Version) Python 3.11.0
3. HashVer (Hash Version) Git Commit 7e6d3fd
파이썬 설치를 위해서는 다음과 같은 방법을 사용할 수 있다.
1. conda
2. docker
3. pyenv
가상 환경 생성을 위해서는 다음과 같은 방법을 사용할 수 있다.
1. venv
2. conda
3. pipenv
4. pyenv-virtualenv
파이썬의 패키지 매니징을 위해서는 다음과 같은 방법을 사용할 수 있다.
1. pip
2. poetry *의존성 패키지 관리가 수월 / 개발환경과 배포환경 분리 가능
3. conda
(3강) 리눅스
주요 명령어들은 다음과 같다.
man (manual) history grep mkdir (make directory) find cut cd (change directory) cat (concatenate) | ls (list segments) bash > echo sudo (superuser do) >> vi (vim) export ps (process status) wget (www get) alias curl (client url) pwd (print working directory) tree df (disk free) mv (move) head, tail scp (secure copy) cp (copy) sort nohup (no hang up) clear uniq chmod (change mod) (4강) Docker 입문
Docker Image: 컨테이너를 실행할 때 사용할 수 있는 '템플릿'
Docker Container: Docker Image를 활용해 실행된 인스턴스
docker 주요 명령어
# 설치 되었는지 확인 docker # mysql:8 다운 docker pull mysql:8 # 다운받은 이미지 확인 docker images # 다운받은 이미지 실행 # --name: 컨테이너 이름 설정, -e: 환경변수 설정 # -d: 데몬 (백그라운드) 모드, -p: 로컬 호스트 포트: 컨테이너 포트 docker run --name mysql-tutorial -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:8 # 실행한 컨테이너 확인 # 작동이 멈춘 컨테이너까지 확인하려면 docker ps -a docker ps # 실행한 컨테이너 진입 docker exec -it mysql-tutorial bin/bash mysql -u root -p # 컨테이너 중지 docker stop mysql-tutorial # 컨테이너 삭제 # 실행중인 컨테이너 삭제를 위해서는 -f 추가 docker rm mysql-tutorial # Volume Mount # -v Host_Folder:Container_Folder docker run -it -p 8888:8888 -v /host/folder:container/folder
docker image 만들기
1. make Dockerfile
# 이미지 빌드에 사용할 베이스 이미지 지정 FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime # COPY "로컬 디렉토리 (파일)" "컨테이너 내 디렉토리 (파일)" COPY . /app # 워킹 디렉토리 설정 WORKDIR /app # 환경변수 설정 ENV PYTHONPATH=/app ENV PYTHONUNBUFFERED=1 # 실행할 리눅스 명령어 RUN pip install pip==23.0.1 && \ pip install poetry==1.2.1 && \ poetry export -o requirements.txt && \ pip install -r requirements.txt # CMD ['실행할 명령어', '인자'] CMD ['python', 'main.py']
2. build & run docker image
# docker build -t "Dockerfile이 위치한 경로" 이미지 이름:태그 이름 docker build -t 02-docker:latest . # docker run 이미지 이름:태그 이름 docker run 02-docker:latest # EXPOSE: 컨테이너 외부에 노출할 포트 지정 # ENTRYPOINT: 이미지를 컨테이너로 띄울 때 항상 실행하는 커맨드
3. push & pull image
# docker login # Username: koppie3248 / Password: default docker login # change name --> username/image_name tag 02-docker:latest koppie3248/02-docker:latest # docker push docker push koppie3248/02-docker:latest # docker pull docker pull _
(5강) 디버깅 Case Study
Github Gist
짧은 코드, 메모 등을 기록 또는 공유 목적으로 사용할 수 있는 무료 서비스
오답노트
- 문제 상황
- 오류 메시지
- 해결한 방법
Linux 파일 시스템 구성
/ : 맨 위에 있는 계층 구조
/bin : 단일 사용자나 다중 사용자에게 모두 기본적으로 필요한 유틸리티 프로그램 (ls, cp 등)
/sbin : 시스템 관리를 위한 유틸리티 프로그램
/boot : 운영 체제 부팅에 필요한 파일
/opt : 소프트웨어 패키지 설치 시 사용
/dev : 하드 드라이브, USB 등 하드웨어 장치를 나타내는 파일이 존재
/etc : 시스템 구성 파일, HOSTNAME 설정 등
/home : 사용자 홈 디렉토리, 사용자별 개인 파일, 개인 설정
/lib : 시스템 라이브러리에서 사용하는 파일
/mnt : 외장 하드 드라이브, USB 마운트할 때 사용
/usr : 사용자 응용 프로그램
/var : 로그 파일, 데이터베이스, 임시 파일
Error: No space left on device
df -h (disk free human-readable)
du -d (disk usage depth)
Error: No such file or directory
파일이나 경로가 존재하는지 확인
네트워크 진단 시 사용하는 명령어
ping (ping google.com)
nslookup (nslookup google.com)
netstat -tlnp
성능 모니터링
top
glances
nvidia-smi
(6강) MLOps
7 Components:
Infrastructure
- Server, GPU
Serving
- Batch Serving / Online Serving
Experiment, Model Management
- mlflow
Feature Store
- the feature store is where the features are stored and organized for the explicit purpose of being used to either train models or make predictions.
- FEAST
Data Validation (Data Management)
- build refreshed model
Continuous Training
- new data / period / metric change / request
Monitoring
AutoML
(7강) Model Serving
웹 서버
- HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트를 전송해주는 서비스 프로그램
- 요청(Request)를 받으면 요청한 내용을 보내주는(Rseponse) 프로그램
$\rightarrow$ 머신러닝 모델 서버: Input & Request에 대해 Ouput & Response
API (Application Programming Interface)
- 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 서버는 여러 API를 가지고 있음
A. Online Serving
구현 방법
1. 직접 API 웹 서버 개발: Flask, FastAPI 등을 활용
2. 클라우드 서비스 활용: AWS의 SageMaker, GCP의 Vertex AI 등을 활용
3. Serving 라이브러리 활용: Torch Serve, MLFlow, BentoML 등을 활용
지연 시간 / 유요하지 않은 결과
1. Database에 있는 데이터를 추출해서 모델을 예측해야 하는가?
$\rightarrow$ 데이터 전처리 서버 분리 / Feature Store
2. 복잡한 모델을 사용하고 있는가?
$\rightarrow$ 모델 경량화
$\rightarrow$ 병렬 처리 (Ray)
3. 결과 값에 대한 보정이 필요한가?
$\rightarrow$ 예측 결과 캐싱
B. Batch Serving
- Workflow Scheduler 활용 (Airflow)
'NAVER AI TECH' 카테고리의 다른 글
8주차 회고록 (AI 서비스 개발 기초) (0) 2023.04.28 8주차 현업자 특강 (0) 2023.04.26 7주차 회고록 (Level 1 Project 종료) (0) 2023.04.22 Transformer (0) 2023.04.05 seq2seq (0) 2023.04.03