Open AI Finetuning UI
https://platform.openai.com/finetune
파일 튜닝 용어 정리
1) Base model - 공부 전의 학생
2) Train - 공부
3) Tokenizer : 책 내용을 작은 단위로 나누어 정리하는 도구
4) Epochs (이포크): 학습 반복 횟수
- 학생이 교재를 처음부터 끝까지 읽는 횟수
5) Batch Size (묶음 크기)
- 학생이 한 번에 공부하는 양, 한 번에 한 장? 한 단원?
6) Learning rate (학습률): 학생이 새로운 정보를 배우는 속도
- 너무 빠르면 이해가 부족하고, 너무 느리면 비효율적
7) Weight decay (가중치 감소)
- 학생이 공부하면서 중요하지 않은 세부 사항에 너무 만흥ㄴ 신경을 쓰지 않도록하기
- 과도한 정보 축적으로 인해 집중력이 흐트러지는 것을 방지
8) Gradient clipping
- 과도한 스트레스나 혼란을 피하기 위해 공부량을 제한.
- 흥분을 가라앉히고 꾸준히 학습할 수 있도록 함
- 기울기 제한? 기울기 자르기
9) Sequence length
- 학생이 한 번에 집중해서 공부할 수 있는 문장의 길이
- 너무 길면 이해하기 힘들고 너무 짧으면 문맥 파악이 어려움
10) PEFT (피이에프티, Parameter-Efficient Fine-Tuning)
- 중요한 부분이나 자신에게 필요한 부분만 선택적으로 공부
- 이미 알고 있는 부분은 복습 생략, 새로운 부분만 학습, 시험 제출 가능성이 높은 부분만 복습 등
- 원래 FineTuning은 전체를 튜닝하는 것
11) LoRA (로라)
- 학생이 주요 개념을 이해한 후, 세부 사항을 간단하게 추가하여 이해를 확장하는 것
- 압축하는것, 태종태세문단세...
12) QLoRA
- 모델 가중치를 양자화(정밀도 감소)하여 LoRA하는 것
- 3.1415926535 를 3.14로 만듬, 저장 공간이 적게 필요함. 연산에 필요한 리소스를 줄임
---
FineTuning 튜토리얼 순서
모델 로딩 - 데이터 로딩 - 파라미터 세팅 - 훈련 - 테스트 - 설치
Home
DeepLearning.AI | Andrew Ng | Join over 7 million people learning how to use and build AI through our online courses. Earn certifications, level up your skills, and stay ahead of the industry.
www.deeplearning.ai
https://github.com/mlabonne/llm-course/blob/main/Fine_tune_Llama_2_in_Google_Colab.ipynb
llm-course/Fine_tune_Llama_2_in_Google_Colab.ipynb at main · mlabonne/llm-course
Course to get into Large Language Models (LLMs) with roadmaps and Colab notebooks. - mlabonne/llm-course
github.com
https://colab.research.google.com/drive/1eHNWg9gnaXErdAa8_mcvjMupbSS6rDvi
Fine-tune Llama 3 with ORPO.ipynb
Colab notebook
colab.research.google.com
amazon-sagemaker-examples/introduction_to_amazon_algorithms/jumpstart-foundation-models at c3ce68a9ef9fc527c88b081c1466f18a4ed99
Example 📓 Jupyter notebooks that demonstrate how to build, train, and deploy machine learning models using 🧠 Amazon SageMaker. - aws/amazon-sagemaker-examples
github.com
https://colab.research.google.com/drive/1bexb6SiEdy_8bwp8UgqNWDRg9LWpa_Kz?usp=sharing
FastCampus_Amazon Sagemaker Fine tuning code extract
Colab notebook
colab.research.google.com
https://colab.research.google.com/drive/1YkjiVtnpLFV4zZI7c04FeElM4DNYI7hb?usp=sharing
FastCampus: Alpaca + Llama-3 8b Unsloth 2x faster finetuning.ipynb
Colab notebook
colab.research.google.com
----
직접 foundation model 만들기
1. 데이터 수집 및 전 철
- 데이터 수집, 정리, 표준화 등등
2. 모델 아키텍쳐 및 학습 방법 결정
- Transformer, GPT-3, Megatron-Tuning NLG등
- 컴퓨팅 자원이 많이 들어간다
- 데이터가 많이 필요하고 학습하는데 시간과 비용이 많이 든다.
Transformer
- 구글에서 2017 만들어진 대표적인 모델 아키텍쳐 , 문맥 이해에 월등함
- 인코더+ 디코더 : 입력 텍스트 처리는 인코더, 출력 테스트는 디코더
BERT (구글 2018)
- 인코더에 집중, 이해에 집중, 모델이 크고 계산량 높음
GPT-3 ( OpenAI)
- 디코더에 집중, 생성에 초점, 창의적임, 답변 잘함, 답변 계산량 높음
3. 모델 평가 및 개선
- 평가 방법 BLEU, ROUGE, CIDEr
- 추가 학습, 하이퍼 파라미터 조정을 반복하여 개선 ( 학습률, 배치 크기, 에포크 수, hidden layer 수, 뉴런 수 등등 )
---
LoRA (Low Rank Latent Representation - 저차원 나중 표현)
파인튜닝은 거의 다시 학습하는데 LoRA는 마지막 부분만 실행하게 함, 어댑터를 끼우는 느낌
저차원 행렬(metrics)를 사용하여 가중치를 수정
Quantization 양자화
아날로그 언어를 디지털화할 때 사용하는 용어
계속되는 값이 아니라 뚝뚝 떨어지는 불연속적인 값
근사치로 표현
단순화하여 모델 크기, 메모리 공간을 줄여 속도 높이고 좋은 하드웨어 없이도 동작하게 함
정확도 손실, 하드웨어 호환성

QLoRA 실습
Large-Language-Model-Notebooks-Course/5-Fine Tuning/QLoRA_Tuning_PEFT.ipynb at main · peremartra/Large-Language-Model-Notebooks
Practical course about Large Language Models. . Contribute to peremartra/Large-Language-Model-Notebooks-Course development by creating an account on GitHub.
github.com
---
Ollama 울라마
API Key 없이 Local PC에서 LLM 실행 가능
데이터 보안, 비용등에서 장점이 있음
Ollama
Get up and running with large language models.
ollama.com
----
LLM Ops Stack
데이터 - 훈련 - 서비스 만들기 - 서비스 사용하기 - 서비스 모니터링
데이터 파이프라인 - 데이터 수집 및 전처리
모델 훈련 학습 인프라 및 프레임워크,하이퍼 파라미터 튜닝 및 최적화
배포 - containerization, orchestration, 확장성/로드 밸런싱
모니터링 - latency, requests conpleted, model drift, updates
* model drift = 학습 내용이 노후화되어 반응이 적절하지 않게되는 것
---
LLM 을 서비스할 때 직면할 수도있는 문제들
1) 프롬프트 버전 관리
- Meta 프롬프트 자체도 업데이트되어야하기때문에 버저닝등 관리해야 함
2) 배치/벌크 테스팅
3) 데이터 파이프라인 인터페이스 만들고 관리하기
4) 모델 스피드/가격/성능 요구에 따라 다른 모델 쓰기
5) 모델 로드 밸런싱
6) 병목현상 찾기
7) 품질 저하 이유 찾기
8) 데이터 retrieval 최적화
9) Retrieved data 스토리지 최적화 및 관리
10) 데이터 로깅 vs RAI 요구사항 맞추기
11) Regression 테스트 만들기
- prompt 업데이트나 모델이 변경했을 때 기본적인 테스트 셋이 있어야 함
- regression
https://www.launchableinc.com/blog/seven-types-of-regression-testing/
12) SLA, KPI 만들고 모니터링하기
- Service Level Agreement
---
LLM 속도를 향상 시키기 위한 전략 / LLM 속도 개선
1) 모델 경량화
- 가지치기(pruning) : 불필요한 모델 파라미터 제거
ex) 한국어만 필요하다면 일본어는 제외한다
- 양자화(quantization) : 모델 파라미터의 정밀도 감소, 32bit 파라미터를 8bit 로 감소시킨다던지( 소수점을 정수로 변환 등 )
- 지식 증류 (knowledge distillation) : 작고 빠른 모델에 지식 전달, 대규모 모델에 있는 지식을 전달
2) 추론 최적화
- 배치 처리 : 여러 오쳥을 한 번에 처리
- 캐싱 : 자주 사용되는 결과 저장 및 재사용
- 하드웨어 가속(Hardware Acceleration) : GPU, TPU 등 활용
3) 코드 및 알고리즘 최적화
- 효율적인 알고리즘 사용 : 요리하는 시간은 같아도 배달하는 시간을 단축 시킨다면 사용자는 더 빨리 음식을 받을 수 있다.
- 병렬처리
- 비동기 처리 : 실무에서는 가장 많이 쓰는 방법,
4) 클라우드 리소스 최적화
- 인스턴스 유형 선택
- 자동 확장 (Auto Scaling)
- Spot Instance, 유휴 리소스 활용
- 컨테이너화 : Docker, Kubernetes : 자원의 격리와 효율적 사용
- 서버리스 켬퓨팅
5) 모델 압축 및 공유
- 모델 가중치 공유 : 여러 모델 간 가중치 공유
- 모델 압축 (Model Compression) : 모델 크기 축소
6) 에너지 효율적인 하드웨어
- 저전력 GPU, TPU 사용
- 에너지 효율적인 데이터 센터 활용
7) 모니터링 + throttling
---
LLM 과 보안
1) Prompts
- Prompt leakage : 프롬프트 노출, 유출 ex) 프롬프트에 정치적인건 얘기하지마라, 경쟁사 제품 추천해주지마라 이런 것들이 노출 될 수도 있으니까
- Prompt hijacking (하이제킹) , Prompt Injection
2) Data
- Use RAG
- Monitor "agents" : AI의 권한 주의
- 로깅 주의
3) 세션 데이터 관리 - compliance 주의
4) 재 훈련할 때의 데이터 관리
5) API Call Security
LLM에서의 보안 대상은?
사용자 보호, 사용자로서의 시스템 보호, 회사 보호
모댈 개발, 입/출력, 프라이버시, 해커, 의도치 않은 데이터 유출, 접근 허용에 보안적인 주의가 필요 함
---
LLM 보안 가이드라인
1. 데이터 수집
- 데이터 프라이버시 : 수집된 데이터가 데이터 보호규정(GDPR, CCPA등)을 준수하도록 함. 익명화
- 데이터 유효성 검사 : 데이터 주입 공격을 방지하고 데이터가 악성 콘텐츠가 없도록 하기 위해 입력 데이터를 검증하고 정리
- 보안 전송 : 전송 중 데이터를 보호하기 위해 Https, SSL/TLS 등의 보안 프로토콜을 사용
2) 데이터 관리
- 접근 제어 : 엄격한 접근 제어 및 역할 역할 기반 접근 관리 (RBAC)를 구현하여 권한이 있는 사람만 민감한 데이터에 접근
- 암호화 : 휴지 상태 및 전송 중인 데이터를 암호화하여 무단 접근 및 유출을 방지
- 감사 로그 : 무단 활동을 모니터링하고 법의학 분석을 지원하기 위해 데이터 접근 및 수정의 자세한 로그를 유지
3) 모델 학습
- 데이터 무결성 : 데이터 중독 공격을 방지하여 모델읳 ㅐㅇ동을 조작하지 않도록 학습 데이터의 무결성을 보장
- 프라이버시 보호 기술 : 학습 데이터의 민감한 정보를 보호하기 위해 차등 프라이버시와 같은 기술을 사용
- 모델 보안 : 학습 환경을 정기적으로 업데이트하고 패치하여 취약점ㅇ르 방지
4) 프롬프트 관리
- 입력 정리 : 주입 공격을 방지하고 악성 콘텐츠가 포함되지 않도록 프롬프트를 정리하고 검증
- 접근 제한 : 권한이 있는 사용자만 프롬프트 관리 인터페이스 접근할 수 있도록 제한
- 모니터링 : 시도된 공격을 나타낼 수 있는 의심스럽거나 비정상적인 활동을 모니터링
5) 모델 배포
- 보안 환경 : 모델을 잠재적 위협으로부터 격리하기 위해 VPC와 같은 보한 환경에 배포
- 컨테이너 보안 : 보안 구성 및 정기 업데이트를 통해 취약점을 완화
- API 보안 : 인증 및 권한 부여 메커니즘, 속도 제한, 입력 유효성 검사로 API 엔드포인트를 보호
6) 어플리케이션 보안
- 코드 검토 : 정기적인 코드 검토 및 보안 평가를 통해 취약점을 식별하고 완화
- 종속성 관리 : 알려진 취약점을 보호하기 위해 도구를 사용하여 Dependency를 스캔하고 업데이트
- 사고 대응 계획 : 보안 침해에 신속히 대응하고 피해를 완화하기 위해 사고 대응 계획을 개발하고 유지
7) 사용자 인증 및 권한 부여
- 강력한 인증 : 사용자 인증 보안을 강화하기 위해 다중 요소 인증(MFA)를 구현
- 세션 관리 : 세션 하이재킹 및 고정을 방지하기 위해 안전한 세션 관리 방법을 사용
- 권한 부여 검사 : 적절한 접근 제어를 보장하기 위해 권한 부여 검사를 정기적으로 검토하고 업데이트
8) 모니터링 및 로깅
- 지속적인 모니터링
- 로그 관리
- 이상 탐지
* 각 주제마다 지원하는 파이썬 라이브러리들이 있음
---
Evaluation
한가지 평가로 LLM 모델이 좋은지 아닌지 판단 할 수는 없다.
무엇에 이 모델을 쓸 것인지 시나리오를 고려해야 한다. -> RAI, 보안, UI 등에 영향을 미침
LLM의 답변만으로 평가를 하는 것이 아니다.


사용자 질문에 제대로된 답변을 했는가
사용자의 질문 의도를 파악하고 질문을 만들어 내는 것 = rewrite 하다
ex) 사용자 - 요즘 돈이 없어서 생활이 너무 힘들고 우울하다
대출 시스템에서 rewirte된 질문은 돈이 없는데 "대출이 가능할까?"
상담 시스템에서 rewrite된 질문은 생활이 힘들고 우울한데 "생활고를 이길 방법이 있을까?"
해당하는 답변을 성공적으로 찾아왔는가?
Precision, F1, recall
여러 답변 중에서 몇개를 사용 할 것인지? threshold setting
파이썬에서 LLM 평가 라이브러리 - RAGAS


가져온 자료 = RAG에서 찾은 자료

얼마나 자료에 충실하게 정확하게 대답했는가,
얼마나 질문에 맞는 대답을했는가,
자료가 도움이되었는가
자룔르 얼만 ㅏ사용했는가 (쓸데없이 많이 가져왔는가 )
자료 중에 정답에 쓰인 부분이 어디에 위치해있는가 (중요성 랭킹)
---
ann architecture