LoRA
·
AI
https://arxiv.org/pdf/2106.09685 거대 언어 모델을 적은 비용으로 파인튜닝하기 위한 방법서론많은 NLP 응용은 하나의 대규모 사전학습 모델을 여러 다운스트림 태스크에 맞게 파인튜닝하는 방식에 의존한다. 파인튜닝은 모델의 모든 파라미터를 업데이트하므로, 새 모델도 원래 모델과 파라미터 수가 같다. 모델이 커지면서 이는 GPT-2, RoBERTa-large에서는 불편함 수준이었지만, GPT-3에서는 태스크마다 175B 사본을 저장하고 배포해야 하는 심각한 문제가 되었다.모델파라미터 수RoBERTa-base125MRoBERTa-large355MGPT-2-large774MGPT-3175B이를 해결하기 위해 일부 파라미터만 적응시키거나 태스크별 외부 모듈을 학습하는 방법이 연구되었다. 이..
배치 정규화
·
AI
https://arxiv.org/pdf/1502.03167WhyInternal Covariate Shift딥러닝 학습 중 앞 레이어의 파라미터가 업데이트될 때마다 뒷 레이어의 입력 분포가 계속 바뀐다. 이를 Internal Covariate Shift(내부 공변량 이동)라 한다. 각 레이어는 매 스텝마다 달라진 분포에 적응해야 하므로 학습이 불안정해지고, 이를 보완하기 위해 낮은 학습률과 신중한 초기화가 강제된다.Gradient vanishing / Exploding특히 sigmoid처럼 포화 구간이 있는 활성함수를 쓸 경우, 분포가 불안정하면 입력값이 포화 구간으로 빠져들기 쉽다. sigmoid 도함수의 최댓값은 0.25이므로, 역전파 시 체인룰에 의해 레이어를 거칠수록 기울기가 기하급수적으로 작아져 ..
[머신러닝] 01. 머신러닝이란?
·
AI
이 글은 스탠퍼드 대학교의 CS229 강의 자료를 바탕으로 작성되었습니다.머신러닝이란?Field of study that gives computers the ability to learn without being explicitly programmed. (Arthur Samuel 1959)컴퓨터가 명시적으로 프로그래밍되지 않고 학습할 수 있는 능력을 제공하는 학문 분야를 의미한다. 인공지능 > 머신러닝 > 딥러닝인공지능의 범주 안에 머신러닝이 포함되고 그 안에 딥러닝이 포함된다. 이 글에서는 머신러닝에 대해 설명한다.머신러닝의 종류지도학습: 훈련 데이터에 레이블이 포함됨비지도학습: 훈련데이터에 레이블이 없음 § 준지도학습: 일부 레이블이 있는 데이터를 사용강화학습: 주어진 환경(environment)에서..
Hailo Data Compiler 사용
·
AI
YOLOv8n 모델을 기준으로 작성된 글입니다.Dataflow 컴파일러 흐름Tensorflow 또는 ONNX 신경망 그래프를 Hailo와 호환되는 표현으로 변환.(har)전체 정밀도 신경망 모델을 8비트 모델로 양자화Hailo 장치에서 실행하기 위해 네트워크를 바이너리 파일(HEF)로 컴파일 parsing1(pt → onnx)yolo export model=./can_plastic.pt imgsz=640 format=onnx opset=11Hailo에서 opset ≤14만 지원 parsing2(onnx → har) hailomz parse --hw-arch hailo8 --ckpt ./small_best.onnx yolov8nyolov8n은 hailo model zoo에서 지원하기 때문에 hailomz..
Hailo 관련 SW 설치
·
AI
raspberryPi 5 Hailo-8Hailo는 모델을 Hailo 환경에 맞추어 컴파일하는 Model Build Environment 부분과 컴파일된 모델을 실행하는 Runtime Environment로 나뉜다. Model Build Environment는 양자화 시 많은 GPU 사용을 필요로 하기 때문에 workstation에서 진행해야 하며 Runtime Environment는 실제 모델이 구동되는 RPI5에 설치되어야 한다. Model Build Environment목적: 모델 컴파일위치: 워크스테이션(GPU 사용이 가능한 컴퓨터)Runtime Environment목적: 모델 추론위치: RaspberryPi 5Model Build 환경 설치(hailo sdk suite)도커 설치가 선행되어야 함..
[k3s] image가 사라지는 문제
·
MLOps
base image베이스 이미지는 레지스트리/이미지:태그로 구성된다. 예를 들어, " nvcr.io/nvidia/tensorflow:23.11-tf2-py3"와 같은 베이스 이미지가 있다면 아래와 같다.레지스트리: nvcr.io/nvidia 이미지: tensorflow 태그: 23.11-tf2-py3 이미지는 1bit라도 바뀌면 달라지는 다이제스트라는 고유한 해시값(SHA256)으로 구분된다. 즉 같은 이미지명, 태그명이더라도 다이제스트는 달라질 수 있다. 이미지 pull 정책컨테이너 생성 시 이미지 pull 정책은 3가지가 존재한다.IfNotPresent이미지가 로컬에 없는 경우만 pull한다. 즉 이미지의 이름, 태그명이 같으면 pull하지 않는다. 다이제스트를 질의하지 않으므로 이미지가 업데이트 된..
[YOLO] COCO 데이터 형식에서 YOLO 데이터 형식으로 바꾸기
·
AI
data ㄴ train -annotations.json -이미지’s… ㄴ valid -annotations.json -이미지’s…YOLO 형식으로 바꾸기 전 COCO 형식으로 된 데이터의 폴더 구조이다. 위 데이터를 아래와 같은 형식으로 바꾸려고 한다.datasets ㄴ images ㄴ train - 이미지's... ㄴ val - 이미지's... ㄴ labels ㄴ train - 라벨's... ㄴ val - 라벨's... 위와 같은 COCO 데이터 형식을 YOLO 데이터 형식으로 바꾸는 코드는 아래와 같다.import jsonimport osimport shutildef cocoToYolo(coco_json_path, output_label_dir): # COCO JSO..
[YOLOv8] custom training하여 바닥 Instance Segmentation하기
·
AI
데이터데이터 다운로드데이터 다운로드Download Dataset → Download dataset → Continue → Format을 COCO Segmentation으로 변경 → Continue 데이터 정보TRAIN SET: 930개VALID SET: 399개데이터 형식: COCOLABEL NAME: tehel 데이터 구조data ㄴ train -annotations.json -이미지’s… ㄴ valid -annotations.json -이미지’s… 데이터 전처리YOLOv8에서 COCO 데이터 형식을 지원한다고 들었으나,, 어떤 자료에서도 COCO형식 그대로 학습 하는걸 찾지 못했다. 따라서 COCO형식의 데이터를 YOLO형식의 데이터로 변환하여 학습했다. 데이터를 다운 받은 후 아래 파일을 실..
[docker] 컨테이너 상에서 gpu 사용량 확인 in jetson nano
·
프레임워크/docker
tegrastatsjetson nano에서 gpu 사용량을 확인하기 위해선 tegrastats 명령어를 사용하면 된다. 그러나 컨테이너 상에서 tegrastats 명령어를 사용하면 command not found 에러가 발생한다.이는 컨테이너 내부에서 /usr/bin/tegrastats:/usr/bin/tegrastats에 접근하지 못하기 때문이다. 따라서 컨테이너 실행 시 이 폴더를 마운트 해주면 tegrastats 명령어를 사용할 수 있다.sudo docker run -it -v $(pwd):/workspace -v /usr/bin/tegrastats:/usr/bin/tegrastats --name mlops-platform-env --privileged --run..
[docker] 컨테이너 내에서 flask 서버 구동 시 외부 접속하기
·
프레임워크/docker
docker 컨테이너 내에서 flask 서버를 구동시키고 내부망의 다른 컴퓨터에서 접속 시 자꾸 연결이 거부됐다. 해결 방법은 간단했다. 컨테이너 실행 시 flask 서버 포트를 매핑해주면 해결된다.나는 5000번 포트를 사용할거기 때문에 -p 5000:5000 옵션을 줬다.sudo docker run -it --name mlops-platform-env -p 5000:5000 mlops-platform-env 또한 기본적으로 Flask 코드에서 host = '0.0.0.0'으로 해줘야 외부에서 접속이 가능하다.if __name__ == "__main__": host = '0.0.0.0' port = "5000" app.run(debug=True, host=host, port=port)