인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

분류 전체보기 114

[LLM] 모델 학습 with HuggingFace (DeepSpeed) (7)

1. DeepSpeed 란?DeepSpeed는 분산 학습 메모리를 효율적이고 빠르게 만드는 PyTorch 최적화 라이브러리 내용 출처: DeepSpeed DeepSpeedDeepSpeed는 분산 학습 메모리를 효율적이고 빠르게 만드는 PyTorch 최적화 라이브러리입니다. 그 핵심은 대규모 모델을 규모에 맞게 훈련할 수 있는 Zero Redundancy Optimizer(ZeRO)입니다. ZeRO는 여러 단계huggingface.co 설치pip install deepspeed 2. 개념2.1. ZeRO(Zero Redundancy Optimizer)ZeRO (Zero Redundancy Optimizer) 방법을 사용함ZeRO-1, GPU 간 최적화 상태 분할ZeRO-2, GPU 간 그레이디언트 분할Ze..

[LLM] 모델 학습 with HuggingFace (Accelerate) (6)

1. 개념멀티 GPU/TPU 환경 등에서 파이토치(PyTorch) 기반 훈련 스크립트를 간편하게 확장할 수 있도록 도와주는 경량 라이브러리전통적으로 PyTorch 분산 학습(DDP)나 TPU/XLA를 직접 설정하려면, torch.distributed API나 TPU용 코드를 별도로 작성사용자 정의 훈련 루프를 최대한 그대로 두면서 분산 학습 설정과 관련된 복잡도를 줄여주는 것이 핵심다양한 하드웨어 가속 환경을 지원 출처: Accelerate 링크 AccelerateConcepts and fundamentalshuggingface.co 설치 방법pip install accelerate 2. 실행 방법2.1. accelerate config (설정 세팅)사용 목적: 사용자의 환경(로컬 머신/멀티 GPU/TP..

[LLM] 모델 학습 with Hugging Face (Trainer, trl) (5)

1. 개요이번 포스팅에서는HuggingFace에서 제공하는프레임워크에 대해 소개하겠다.라이브러리역할주요 기능Transformers모델, 토크나이저AutoModel, AutoTokenizer 등Trainer지도학습 (SFT)Trainer, TrainingArgumentsTRL강화학습 (RLHF)PPOTrainer, SFTTrainerDeepSpeedGPU 메모리 최적화ZeRO Stage, Hugging Face Trainer와 연동Accelerate분산 학습 최적화여러 GPU/TPU 환경에서 Trainer 가속화PEFT (Parameter Efficient Fine-Tuning)파라미터 효율적 파인튜닝 기법 지원LoraConfig, get_peft_modelEvaluate모델 평가load_metric("b..

[LLM] 데이터 준비하기 with datasets (4)

1. LLM 학습을 위한 데이터 형식모델에 따라 필요한 데이터의 형식은 달라질 수 있으나,일반적인 모델은 텍스트만 있으면 된다. (특이 케이스 형태의 데이터는 다음에 업데이트 하겠다.) 그리고 아래와 같은 태그를 붙여준다. (안붙여줘도 학습은 된다고 한다.) : 문장의 시작 : 문장의 끝 예를 들면 다음과 같다.data = [ {"text": " 인공지능은 사람의 언어를 학습할 수 있습니다. "}, {"text": " 사용자: 오늘 날씨 어때? "}] 만약 데이터를 직접 만들고 싶으면위와 같이 만들면 되겠다. 2. datasets를 이용해 데이터 불러오기datasets 는 huggingface에서 관리하는 데이터 셋을 불러오기 위한 라이브러리이다. 설치 명령어는 아래와 같다.pip instal..

[langchain] 채팅 히스토리와 메모리 (History, Memory)

0. 개요LangChain에서 대화 히스토리는 Memory 에서 관리한다.모델이 이전에 어떤 맥락(대화 이력 등)을 가지고 있었는지 유지이전 대화 내용을 연속적으로 반영하기 위한 구조 관리 방법과거 대화 내용을 요약하거나핵심만 발췌하거나혹은 토큰 제한(token limit)에 맞춰서 관리 1. 채팅 히스토리(History)채팅 내용을 물리적인 공간에 저장/관리 하는 기능대화(메시지)들을 실제로 보관하는 역할in-memory, redis, postgres, file, mongodb 등 다양한 곳에 저장할 수 있음 1.1. 인메모리(in-memory)에 저장인메모리(in-memory) 대화 기록 저장ChatMessageHistory 클래스 사용프로그램이 동작하는 동안만 메시지를 기억하고, 종료 시에는 사라진..

[FastAPI] FastAPI 속도개선 - 캐시(Cache) (15)

1. 캐시(Cache)란캐시(Cache)는 자주 사용되는 데이터를 빠르게 접근할 수 있도록 저장해 두는 임시 저장소즉, 속도를 높이고 성능을 최적화하기 위해 데이터를 미리 저장하는 기술 동작 방식사용자가 특정 데이터 요청 → 서버에서 데이터 조회 → 캐시에 저장다음에 동일한 요청이 오면, 데이터베이스 대신 캐시에서 데이터를 반환일정 시간이 지나면 캐시 만료(Expire) → 새로운 데이터를 다시 저장 사용 이유속도 향상서버 부하 감소비용 절감 주의사항오래된 데이터(Invalidation 문제) : 최신화된 데이터가 불러와지지 않을 수 있음메모리 사용량 증가 : 캐시가 많아질수록 메모리를 많이 차지하므로 적절한 용량 관리가 필요. 2. FastAPI 사용 방법2.1. 설치먼저 아래 명령어로 라이브러리를 설..

Fastapi 2025.02.04

[FastAPI] pytest 사용법 (14)

1. pytest 란1.1. 기본 설명pytest는 함수 이름이 test_로 시작하는 함수를 찾아서 실행함수 정의 시, assert 키워드를 이용해 성공 여부를 검사. True인 경우 성공 pytest 예시코드def test_addition(): assert 1 + 2 == 3def test_string_upper(): assert "pytest".upper() == "PYTEST"def test_fail(): assert 1 + 1 == 3, "이 테스트는 실패해야 합니다!" 특정 파일 테스트 실행pytest 키워드 사용pytest test_sample.py 특정 디렉토리 안의 모든 테스트 실행pytest tests/test_routers/ 특정 함수만 테스트 실행-k 옵션을 사용pyt..

Fastapi 2025.02.03

[FastAPI] 로그 남기기 (logging) (13)

1. 기본 logging 설정 utils/logging.pyPython의 logging 모듈을 사용해서 FastAPI에 로깅을 추가logging.basicConfig() : 기본 로깅 설정 logging.StreamHandler() : 터미널에 출력하는 핸들러logging.FileHandler(file_path, mode="a") : 로그 파일에 저장logger = logging.getLogger("로거 이름") : logger 정의, 로거를 여러개 만든다면, 로거 이름을 각각 사용해 구분할 수 있다.import loggingimport os# 로그 파일 경로 설정LOG_FILE_PATH = "logs/app.log"os.makedirs(os.path.dirname(LOG_FILE_PATH), exist..

Fastapi 2025.02.03

[FastAPI] 공통 코드(Common Code) 작성 방법 (12)

1. 공통 코드(Common Code)란?공통 코드는 반복되는 로직을 모듈화하여 여러 곳에서 재사용할 수 있도록 구성하는 것 ✅ 장점코드 중복 감소 → 동일한 로직을 여러 곳에서 사용 가능가독성 향상 → 핵심 로직만 남아 코드가 깔끔해짐유지보수 용이 → 하나의 파일에서 수정하면 모든 곳에 적용됨테스트 용이 → 공통 모듈을 독립적으로 테스트 가능 2. 공통 코드 작성 방법공통 코드 디렉토리 구조보통 utils/ 디렉터리에 작성하며, 프로젝트 전반에서 사용my_fastapi_project/│── main.py│── routers/│── services/│── repositories/│── models/│── schemas/│── database.py│── utils/ # ✅ 공통 코드 디렉터리│ ├──..

Fastapi 2025.02.02

[FastAPI] 디자인 패턴-스키마 패턴(11-7)

1. 스키마 패턴(Schema Pattern)이란?FastAPI에서 Pydantic을 사용하여 API 요청과 응답 데이터를 구조화하는 방법을 의미데이터 유효성을 보장하면서, API 응답 구조를 일관되게 유지데이터 유효성 검사 (Validation)입력(Input)과 출력(Output) 데이터 분리 (UserCreate, UserResponse 처럼 서로 다른 구조 정의 가능)API 문서 자동 생성 지원ORM과 분리된 구조 유지 2. 사용 방법프로젝트 구조 예시✅ Pydantic 스키마는 schemas/ 폴더에서 관리하여 API 요청과 응답 데이터를 처리my_fastapi_project/│── main.py│── routers/│ ├── user.py│── services/│ ├── user_ser..

Fastapi 2025.02.02
반응형