머신러닝 & 딥러닝 52

[LLM] 프롬프트 엔지니어링 정리(3)

보안 강화를 위한 프롬프트 엔지니어링 (Defensive Prompt Engineering)📌 AI 애플리케이션이 공개되면, 악의적인 사용자가 이를 악용할 수도 있습니다.✅ 프롬프트 해킹(prompt attacks)을 방어하는 것이 중요합니다.1️⃣ 프롬프트 추출 공격 (Prompt Extraction)공격자가 애플리케이션의 프롬프트(특히 시스템 프롬프트)를 추출하여 분석하는 공격 기법이를 통해 애플리케이션을 복제하거나 악용할 수 있음2️⃣ 감옥 탈출 및 프롬프트 주입 (Jailbreaking & Prompt Injection)모델이 원래 수행해서는 안 되는 악의적인 행동을 하도록 유도하는 공격예를 들어, 프롬프트 주입(prompt injection) 을 사용하여 제한된 정보를 모델이 공개하도록 만들 ..

[LLM] 프롬프트 엔지니어링 정리(2)

명확하고 구체적인 지시 작성하기 (Write Clear and Explicit Instructions)AI와 소통하는 것은 사람과 소통하는 것과 비슷하기 때문에 명확성이 중요합니다.따라서 모델이 수행해야 할 작업을 명확하고 모호함 없이 설명하세요.예:모델이 에세이를 1점에서 5점까지 평가하도록 하고 싶다면, 어떤 기준을 사용할지 명확하게 설명해야 합니다.모델이 점수에 대해 불확실할 경우, 최선의 판단을 하도록 할 것인지, "모르겠다"라고 답변하게 할 것인지 지시해야 합니다.모델에게 특정 인물(Persona)을 설정하도록 요청하기모델에게 특정 역할을 부여하면 더 적절한 응답을 얻을 수 있습니다.예를 들어, 다음과 같은 문장을 평가하는 프롬프트를 생각해 봅시다:" 운동은 건강에 좋고, 기분을 상쾌하게 만들어..

[LLM] 프롬프트 엔지니어링 정리(1)

개요업무를 진행하면서 혹은 개인적으로 배운 내용을 짧게나마 정리를 하고자 블로그 글을 작성했습니다. 프롬프트 소개 (Introduction to Prompting)현재 AI에서 가장 쉽게 접근 가능한 방법으로 프롬프트를 작성해서 생성하는 기능입니다.프롬프트는 일반적으로 다음과 같은 요소를 포함합니다. 작업 설명 (Task description)모델이 수행해야 할 작업, 모델이 수행해야 할 역할, 출력 형식을 설명합니다.작업 수행 예시 (Examples of how to do this task)예를 들어, 텍스트에서 유해성을 감지하는 모델을 원한다면, 유해한 경우와 유해하지 않은 경우의 예제를 제공할 수 있습니다.작업 (The task)모델이 실제로 수행해야 할 구체적인 작업을 포함합니다. 예를 들어, 질..

Gradient Accumulation 문제 및 해결 방법과 Batch 비교

Transformer Gradient Accumulation 문제 및 해결 방법1. 문제 개요문제: Gradient Accumulation(GA)은 수학적으로 Full Batch Training과 동일해야 하지만, 실험 결과 특정 조건에서 Training Loss가 일치하지 않음.현상: GA 크기가 클수록 Training Loss가 증가하는 이상 현상 발생. 예를 들어 bsz=1, ga=16와 bsz=16, ga=1의 Training Loss가 다름.원인: Cross Entropy(CE) Loss의 Normalizer가 제대로 작동하지 않음. 이는 L2 Norm이 증가하는 결과를 초래. 2. 문제 원인 분석Cross Entropy Loss 정상화 문제:CE Loss의 정규화 과정에서 Gradient Ac..

SDXL 및 Flux 모델에서 세부적인 요소 퀄리티 올리는 방법

1. 프롬프트 엔지니어링 (Prompt Engineering)Text-To-Image 모델의 생성 품질은 프롬프트의 정보 밀도와 디테일 수준에 크게 의존합니다. 악세사리 디테일을 강화하려면 다음과 같은 고도화된 프롬프트 설계 기법을 적용합니다디스크립터 확장 (Descriptor Expansion):물리적 특성과 시각적 질감에 대한 상세한 서술을 포함시킵니다.예: “a hand-forged platinum bracelet with interwoven Celtic patterns, intricate gemstone inlays, glistening under soft ambient lighting”스타일 및 질감의 명시적 정의 (Explicit Style and Texture Specification)고유한..

UNet과 Text Encoder의 학습 방법

1. UNet의 기본 특성과 한계Computer Vision 모델의 Low-Level Pixel Space 특성으로 인해 복잡한 지식 표현이 어렵습니다.시각적 요소들이 유사도 기반으로 분산되어 있습니다:'손 그림', '발 그림', '다리 그림' 등이 연결 없이 흩어져 있습니다.비유하자면 주머니 속 각각의 구슬과 같습니다.학습 가능한 기초적 지식의 범위:눈, 코, 입의 기본적인 얼굴 배치인체의 기본 구조 (팔 2개, 다리 2개)신체 부위의 기본적 연결 관계 2. Text Encoder의 도입과 역할High-Level의 압축된 지식을 다룹니다.Semantic 특성으로 인간의 인식과 유사한 해석이 가능합니다.UNet과의 결합 효과:원하는 시각적 요소를 선택적으로 활용합니다.상황에 맞는 조합을 가이드합니다.이러..

Stable Diffusion 3.5 Large Fine-tuning Tutorial 정리

참고https://stabilityai.notion.site/Stable-Diffusion-3-5-Large-Fine-tuning-Tutorial-11a61cdcd1968027a15bdbd7c40be8c61. 환경 설정Python 환경 설정# Python 3.11.6 이상 필요python -m venv .venvsource .venv/bin/activatepip install -U poetry pip# Poetry 설정poetry config virtualenvs.create falsepoetry installCUDA 요구사항CUDA 12.2 이상 권장낮은 버전 사용시 수정된 설치 방법 필요# CUDA 12.1 예시pip install torch==2.4.1+cu121 torchvision==0.19.1..

Stable Diffusion 3.5 Medium 모델 학습 최적화 가이드

Stable Diffusion 3.5 medium 모델 구조 1. 핵심 학습 방법 최적화노이즈 샘플링 전략Logit-normal 분포를 사용한 노이즈 샘플링 구현def logit_normal_sampling(t, m=0.0, s=1.0): u = torch.randn_like(t) * s + m return torch.sigmoid(u)파라미터 설정:위치 파라미터 m = 0.0스케일 파라미터 s = 1.0중간 타임스텝에 더 많은 학습 가중치 부여EDM이나 기존 확산 모델보다 우수한 성능 달성손실 함수 최적화Conditional Flow Matching (CFM) 손실 함수 사용: def compute_cfm_loss(model_output, noise, t): # v_θ(z, t) - u..

Flux perfermence improved by Flash attention3 + Triton

FlashAttention-3: 대규모 언어 모델을 위한 어텐션 메커니즘의 혁신1. 서론대규모 언어 모델(LLM)의 발전과 함께, 트랜스포머 구조의 핵심 요소인 어텐션 메커니즘의 효율성 개선이 중요한 과제로 대두되고 있습니다. 특히 긴 문맥(long-context)을 다루는 모델에서 어텐션 연산은 주요 병목 현상의 원인이 되어왔습니다. 이러한 맥락에서 FlashAttention 알고리즘의 발전, 특히 최근 발표된 FlashAttention-3는 주목할 만한 혁신을 가져왔습니다.하지만 들어가기에 앞서 현재 FlashAttention3는 Hopper 기반(H100)에서만 사용이 가능하고 ADA 기반(RTX4090, L4) GPU는 사용을 할 수가 없음으로 추후에 업데이트를 기다려야 합니다.2. FlashAt..

Flux 모델 최적화를 위한 TorchAO 및 torch.compile() 활용 가이드

1. 서론대규모 이미지 생성 모델인 Flux와 SDXL의 성능을 최적화하는 것은 실용적 응용에 있어 매우 중요합니다. 이 리서치글에서는 TorchAO와 PyTorch의 torch.compile() 기능을 활용하여 이러한 모델들의 추론 속도를 향상시키고 메모리 사용량을 줄이는 방법에 대해 살펴보겠습니다.2. TorchAO를 이용한 양자화2.1 기본 양자화 적용Flux나 SDXL 모델에 TorchAO의 양자화를 적용하는 기본적인 방법은 다음과 같습니다:from diffusers import FluxPipeline# 또는 StableDiffusionXLPipelinefrom torchao.quantization import autoquantimport torchpipeline = FluxPipeline.fro..