오늘날의 빠르게 진화하는 AI 환경에서 고품질의 주석이 달린 데이터 세트 및 맞춤형 모델에 대한 수요는 그 어느 때보 다 큽니다. 이러한 요구를 해결하기 위해 우리의 프로젝트는 데이터 주석을 모델 미세 조정과 완벽하게 통합하는 혁신적인 모듈을 개발하는 것을 목표로합니다. 이 모듈은 Claude 또는 ChatGpt-4와 같은 최첨단 언어 모델을 활용하여 제공된 고객 이미지를 레이블을 지정하고 이러한 주석을 사용하여 안정적인 확산 XL (SDXL) 모델을 미세 조정합니다.
이 프로젝트의 목표는 데이터 주석 프로세스를 자동화하고 모델 교육을 향상시키는 강력하고 효율적인 모듈을 만드는 것입니다. 고급 AI 기능을 통합함으로써, 우리는 새로 주석이 달린 데이터 세트와 함께 미세 조정 된 고도로 적응력이 뛰어나고 정확한 SDXL 모델을 생성하는 것을 목표로합니다.
Claude/ChatGpt-4 (또는 유사한) API를 활용하여 5-20 개의 고객 이미지 세트에 대한 고품질 주석을 생성합니다.
주석이 정확하고 일관되어 있는지 확인하십시오. 교육 목적으로 신뢰할 수있는 데이터 세트를 작성하십시오.
주석이 달린 데이터 세트를 사용하여 SDXL 모델을 미세 조정하십시오.
주석이 달린 데이터의 특정 특성을 기반으로 모델의 성능을 최적화하기 위해 저 순위 적응 (LORA) 기술을 구현합니다.
이 프로젝트는 중요한 프로세스를 자동화하고 통합하여 AI 모델 개발의 효율성과 정확성을 향상 시키도록 설계되었습니다. 주석과 정교한 미세 조정 방법을위한 고급 언어 모델의 조합은 다양한 AI 응용 프로그램의 증가하는 요구를 충족시키는 매우 효과적인 솔루션을 초래할 것입니다. 수동 노동을 줄이고 모델 성능을 향상 시킴으로써이 프로젝트는 생성 AI 기술에 의존하는 산업에 상당한 가치를 제공 할 것입니다.

다른 유형의 미세 조정이 있습니다. 미세 조정 방법의 선택은 시스템 사양 및 사용에 따라 다릅니다. LORA (낮은 순위 적응) 모델은 더 큰 효율성과 소형성을 제공합니다. 기존 체크 포인트 모델을 기반으로하는 어댑터처럼 작동합니다. 특히 LORA 모델은 체크 포인트 모델에서 매개 변수의 하위 집합 만 업데이트하여 기능을 향상시킵니다. 이 접근법을 사용하면 LORA 모델이 일반적으로 2MB에서 500MB 범위의 더 작은 크기를 유지할 수 있으며 특정 개념이나 스타일에 대해 빈번한 미세 조정을 가능하게합니다.
예를 들어, Dreambooth를 사용하여 안정적인 확산 모델을 미세 조정하는 경우 전체 모델을 특정 개념 또는 스타일에 적응하도록 수정하면 큰 모델 크기 (약 2 ~ 7GB) 및 집중 GPU 사용으로 인해 중요한 계산 리소스가 필요합니다. 대조적으로, LORA 모델은 GPU 요구 사항이 상당히 낮은 비슷한 추론 결과를 달성합니다.
LORA는 널리 채택 된 방법이지만 안정적인 확산을 수정하는 대안 접근법이 있습니다. 이러한 방법 중 하나는 프롬프트 텍스트를 텍스트 임베딩으로 변환하는 것으로부터 파생 된 입력을 처리하는 CrossAttention 모듈과 관련이 있습니다. 텍스트 반전은 Lora보다 훨씬 작고 빠른 다른 접근법을 나타냅니다. 그러나 텍스트 반전은 특정 개념이나 스타일에 대해 미세 조정 텍스트 임베드로 제한됩니다. 이미지 생성을 담당하는 기본 U-NET는 변경되지 않은 상태로 남아 있으며, 완전히 새로운 출력을 생성 할 수있는 능력없이 훈련 중에 사용 된 이미지와 유사한 이미지를 생성하는 데 텍스트 반전이 제한됩니다.
이 프로젝트에는 두 가지 유형의 미세 조정 방법이 있습니다. 첫 번째 옵션은 Dreambooth와 Lora의 조합을 사용하고 다른 옵션은 Lora 만 사용하는 것입니다. 첫 번째 옵션을 사용하는 것이 최선의 선택 이며이 프로젝트에서 선호하는 방법입니다. 이 선택의 이유는 다음과 같습니다.
향상된 적응성 : Dreambooth는 전체 모델을 특정 개념이나 스타일에 포괄적으로 적응할 수있는 미세 조정 방법입니다. SDXL 모델은 DreamBooth를 미세 조정함으로써 원하는 출력과 밀접하게 일치하는 미묘한 세부 사항과 특성을 배울 수 있습니다.
효율성과 압축성 : Dreambooth 미세 조정 후 LORA (낮은 순위 적응)가 작용합니다. LORA 모델은 체크 포인트 모델의 매개 변수의 하위 집합 만 업데이트하여 효율성을 최적화하도록 설계되었습니다. 이 접근법은 Dreambooth에 의해서만 수정 된 것과 같은 완전히 미세 조정 된 모델과 비교하여 모델 크기 (일반적으로 2MB ~ 500MB)를 크게 줄입니다.
계산 자원 감소 : Dreambooth와 LORA를 결합하면 교육 및 추론 모두 동안 GPU 리소스가 적은 모델을 생성합니다. Dreambooth는 처음에는 포괄적 인 미세 조정 프로세스로 인해 상당한 리소스가 필요하지만 Lora의 후속 매개 변수 감소는 모델을 관리 가능하고 효율적으로 유지하도록합니다.
성능 보존 : 효율성 향상에도 불구하고 Lora는 Dreambooth 미세 조정을 통해 달성 된 고품질 성능을 유지합니다. 이 조합은 모델이 완전히 미세 조정 된 모델에 의해 생성 된 것과 비슷한 인상적인 출력을 생성하는 능력을 유지하도록합니다.
반복 정제를위한 유연성 : Dreambooth의 반복적 인 접근과 LORA는 반복적 인 개선과 미세 조정을 허용합니다. 이 유연성은 모델의 효율성이나 성능을 손상시키지 않으면 서 진화하는 개념이나 스타일에 대한 지속적인 적응이 필요한 시나리오에서 중요합니다.
위에서 언급했듯이,이 프로젝트에서 SDXL 모델을 미세 조정하는 선호하는 방법은 Dreambooth와 Lora의 조합입니다. Dreambooth와 Lora를 결합한 이론적 근거는 모델 적응성과 계산 효율성 사이의 상충 관계를 최적화하는 데 있습니다. DreamBooth는 데이터 또는 원하는 출력의 특정 뉘앙스에 모델의 매개 변수를 철저히 적응할 수 있습니다. 그러나이 포괄적 인 적응은 특히 훈련 및 추론 중에 더 큰 모델 크기와 계산 요구를 증가시킬 수 있습니다. 반면, Lora는 드림 부스 이후에 개입하여 모델을 간소화하여 성능을 유지하면서 크기를 줄입니다. 이 조합은 정확한 적응을위한 Dreambooth와 효율적인 매개 변수 관리를위한 LORA의 강점을 활용합니다.
이 미세 조정 접근법의 주요 단계는 다음과 같습니다.
매개 변수 조정 : Dreambooth를 사용하여 SDXL 모델 내의 전체 매개 변수 세트를 조정하여 정의 된 목표와 더 밀접하게 정렬합니다. 이 프로세스에는 대상 데이터 세트 또는 원하는 출력 특성을 기반으로 한 반복 업데이트가 포함됩니다.
교육 단계 : 정의 된 목표 및 교육 데이터를 사용하여 미세 조정 프로세스를 실행합니다. 이 단계는 SDXL 모델이 당면한 작업의 특정 뉘앙스 및 요구 사항에 대해 미세하게 조정되도록합니다.
매개 변수 선택 : Dreambooth 이후, 성능 유지 또는 향상에 가장 중요한 매개 변수의 서브 세트를 식별합니다. 이 단계에는 미세 조정 된 SDXL 모델 내에서 다른 매개 변수의 중요성과 영향을 분석하는 것이 포함됩니다.
낮은 순위 인수화 : 이들 선택된 매개 변수 서브 세트에 낮은 순위 매트릭스 인수 화와 같은 LORA 기술을 적용하십시오. LORA는 매개 변수 행렬을 낮은 순위 구성 요소로 분해하여 중복성을 줄이고 가장 영향력있는 매개 변수에 계산 리소스를 집중시킵니다.
선택적 매개 변수 업데이트 : 식별 된 저급 구성 요소 만 업데이트하여 성능 메트릭을 유지하거나 개선하면서 모델의 효율성을 최적화합니다.
(뒤로 맨 위로)
Accelerate는 다양한 하드웨어 설정에서 머신 러닝 모델을 훈련 및 배포하는 프로세스를 간소화하고 최적화하기 위해 얼굴을 안고 다양한 하드웨어 설정 과정을 간소화하고 최적화하도록 설계된 다목적이고 사용자 친화적 인 라이브러리입니다. 다중 GPU 및 TPU 설정과 같은 다양한 분산 교육 환경을 구성하고 관리하는 복잡성을 추상화하는 통합 인터페이스를 제공합니다. Accelerate는 개발자가 기본 인프라보다는 모델 개발에 중점을두고 Pytorch 코드를 쉽게 확장 할 수 있도록합니다.
이 라이브러리의 이점은 다음과 같습니다.
분산 교육 단순화 : 복잡한 분산 설정을 수동으로 구성하고 관리 할 필요가 없어 모델 개발 및 미세 조정에 집중할 수 있습니다.
리소스 활용 향상 : 사용 가능한 하드웨어 사용을 최대화하여 GPU 및 TPU가 효과적으로 교육 및 추론 프로세스 속도를 높이도록합니다.
대형 모델을 지원합니다 : 상당한 메모리와 계산력이 필요한 대형 모델의 처리를 용이하게하여 최첨단 신경망과 함께 작업 할 수 있습니다.
개발 오버 헤드 감소 : 분산 교육을 프로젝트에 통합하여 시간을 절약하고 다양한 하드웨어 환경 관리와 관련된 오버 헤드를 줄입니다.
Bitsandbytes는 특히 교육 및 추론의 맥락에서 대규모 신경 네트워크의 성능을 최적화하도록 설계된 효율적이고 혁신적인 라이브러리입니다. 정확도를 희생하지 않고 메모리 소비와 계산 간접비를 크게 줄이는 도구와 기술을 제공합니다. Bitsandbytes의 눈에 띄는 기능 중 하나는 8 비트 정밀 최적화기를 지원하는 것입니다.
이 프로젝트에서는 8 비트 최적화 기술을 사용하고 있습니다. Bitsandbytes의 8 비트 최적화기는 훈련 과정에서 32 비트 부동 소수점 수에서 8 비트 정수까지 가중치 및 그라디언트의 정밀도를 정밀화하는 기술입니다. Bitsandbytes의 8 비트 최적화기를 사용하는 것은 안정적인 확산 XL (SDXL)과 같은 생성 모델의 미세 조정과 같은 대규모 신경망과 관련된 프로젝트에 특히 유리합니다. 8 비트 최적화기를 사용하는 주요 이유는 다음과 같습니다.
더 큰 모델 처리 : 대형 모델을 사용 가능한 하드웨어 메모리에 맞추면 불가능한 최첨단 아키텍처 교육을 가능하게합니다.
더 빠른 교육 : 계산 부하를 줄임으로써 훈련 시간을 가속화하여 더 빠른 실험 및 반복을 허용합니다.
리소스 최적화 : 사용 가능한 하드웨어 사용을 극대화하고 비용이 많이 드는 업그레이드의 필요성을 줄이고 기존 리소스를 효율적으로 사용합니다.
향상된 성능 : 기존의 32 비트 교육 방법에 대한 비슷한 정확성과 성능을 달성하면서 메모리 및 계산 요구가 줄어 듭니다.
Hugging Face가 개발 한 Transformers Library는 자연 언어 처리 (NLP) 및 기타 작업을위한 광범위한 최첨단 미리 훈련 된 모델을 제공하는 오픈 소스 라이브러리입니다. Bert, GPT, T5, Roberta 등 다양한 변압기 아키텍처를 지원합니다. 이 라이브러리는 텍스트 분류, 번역, 질문 답변 등을 포함한 다양한 응용 프로그램에 이러한 강력한 모델을 쉽게 사용할 수 있도록 설계되었습니다.
이 라이브러리 사용의 이점은 다음과 같습니다.
최첨단 모델에 대한 액세스 : NLP 및 그 이후에서 가장 고급 모델 중 일부에 쉽게 액세스하고 구현하여 최고 성능의 아키텍처로 작업 할 수 있도록합니다.
빠른 개발 : 라이브러리의 간단한 API를 통해 빠른 프로토 타이핑 및 실험을 가능하게하여 개발 프로세스의 속도를 크게 높입니다. 전송 학습 기능 : 특정 작업에 대한 강력한 미리 훈련 된 모델을 미세 조정하고 사전 지식을 활용하고 데이터가 적은 고성능을 달성합니다.
다목적 응용 프로그램 : 텍스트 분류, 감정 분석, 엔티티 인식, 기계 번역 등을 포함한 광범위한 작업에 라이브러리를 사용하십시오.
강력한 커뮤니티 지원 : Hugging Face가 제공하는 강력한 커뮤니티와 광범위한 자원의 혜택을 누리면서 도전을 극복하고 프로젝트의 혁신에 필요한 지원을받을 수 있습니다.
PEFT (매개 변수 효율적인 미세 조정) 라이브러리는 대규모 기계 학습 모델의 미세 조정 프로세스를 최적화하도록 설계되었습니다. PEFT는 계산 자원이 제한된 미세 조정 대규모 모델의 과제를 해결하기 위해 개발 된 모델의 매개 변수를 최소화하는 새로운 작업에 미리 훈련 된 모델을 효율적으로 적응할 수있는 기술에 중점을 둡니다.
PEFT 사용의 이점 :
효율성 : 매개 변수 효율적인 방법에 중점을 두어 대형 모델을 미세 조정하는 것과 관련된 계산 및 메모리 오버 헤드를 줄입니다.
접근성 : 표준 하드웨어에서 최첨단 모델을 미세 조정하여 고급 기계 학습 기술에 대한 액세스를 민주화 할 수 있습니다.
속도 : 미세 조정 프로세스를 가속화하여 더 빠른 모델 업데이트 및 배포가 가능합니다.
성능 : 고급 미세 조정 기술 덕분에 매개 변수가 적을수록 고성능을 보장합니다.
다목적 성 : 광범위한 모델과 작업에 적용하여 기계 학습 전문가를위한 다양한 도구를 제공 할 수 있습니다.
(뒤로 맨 위로)
이러한 그라디언트를 계산하는 역전술은 모델의 중간 활성화를 저장해야합니다. 이것은 특히 SDXL과 같은 대형 모델의 경우 메모리 집약적 일 수 있습니다. 그라디언트 체크 포인트는 추가 계산 시간을 위해 메모리 사용을 거래 하여이 메모리 문제를 해결합니다. 역전 중에 전체 모델에 모든 중간 활성화를 저장하는 대신, 그라디언트 체크 포인트는 이전에 저장된 체크 포인트에서 시작하여 활성화를 주기적으로 재구성합니다. 이 접근법은 뒤로 패스 중에 활성화를 즉석에서 다시 계산하여 피크 메모리 사용을 감소시킵니다. 그라디언트 체크 포인팅을 사용하면 모든 중간 활성화를 저장하는 메모리 오버 헤드가 줄어 듭니다. 이는 광범위한 매개 변수 조정 (Dreambooth) 및 선택적 업데이트 (LORA)를 겪은 미세 조정 모델에 특히 유리합니다. 그라디언트 체크 포인트는 메모리 소비를 줄이지 만 재 계산으로 인한 추가 계산 오버 헤드를 도입합니다. 메모리와 계산 사이의 상충 관계는 가용 리소스와 특정 미세 조정 목표를 기반으로 균형을 이루어야합니다.
Adam (적응 모멘트 추정)은 딥 러닝에서 널리 사용되는 인기있는 최적화 알고리즘입니다. 각 매개 변수의 적응 학습 속도를 모멘텀과 결합하여 수렴을 가속화합니다. 일반적으로 Adam은 그라디언트를 저장하고 매개 변수를 업데이트하기 위해 32 비트 부동 소수점 번호 (단일 정밀도)를 사용합니다. '8 비트 Adam'은 이러한 작업에 8 비트 고정점 번호를 사용하여이를 수정합니다. 32 비트 대신 8 비트 정밀도를 사용함으로써 '8 비트 아담'은 훈련 중에 그라디언트 및 매개 변수를 저장하는 데 필요한 메모리 발자국을 크게 줄입니다. 이것은 수많은 매개 변수가있는 SDXL과 같은 대형 모델의 경우 특히 유리합니다. 정밀 산술 작업이 낮아지면 메모리 대역폭 요구 사항이 줄어들어 계산 속도를 높일 수 있습니다. 이로 인해 특히 정밀 작업이 적은 하드웨어 아키텍처에서는 교육 시간이 빠를 수 있습니다. 그러나 트레이드 오프가 있습니다. 정밀도를 낮추면 특히 신중하게 구현되지 않은 경우 모델의 정확도와 안정성에 영향을 줄 수 있습니다. 그라디언트 스케일링 또는 적응 형 정밀 조정과 같은 기술은 잠재적 정확도 손실을 완화하기 위해 필요할 수 있습니다.
부동 소수점 정밀, 32 비트 플로팅 포인트 및 16 비트 플로팅 포인트에는 두 가지 정밀도가 있습니다. 32 비트 플로팅 포인트는 모델 매개 변수를 저장하고 계산을 수행하는 데 대부분의 딥 러닝 프레임 워크에 사용되는 표준 정밀도입니다. 높은 수치 정확도를 제공하지만 더 많은 메모리 및 계산 리소스가 필요합니다. 16 비트 플로팅 포인트는 32 비트 플로팅 포인트의 메모리의 절반을 사용하는 감소 된 정밀 형식입니다. 그것은 많은 딥 러닝 작업에 대해 충분한 수치 정밀도를 유지하면서 특히 텐서 코어가있는 GPU에서 계산을 가속화합니다. 16 비트 정밀도를 사용하면 특히 복잡한 계산이 포함 된 SDXL과 같은 대규모 모델의 경우 교육 시간을 크게 높일 수 있습니다. 또한 정밀도 감소는 메모리 대역폭이 줄어들어 사용 가능한 하드웨어 한계 내에서 더 큰 모델 또는 배치 크기를 훈련시키는 것이 가능합니다.
(뒤로 맨 위로)
Colab을 사용하여 프로젝트 설정에 대한 지침. 아래 링크를 따라 직접 훈련하십시오. "statue_lora"폴더에서 사전 취사 모델을 찾을 수 있습니다.
대리석 동상 데이터 세트로 훈련 된 사전 배치 된 모델을 사용하여 유선형 추론 데모를 실행하려면 다음 명령을 사용하십시오.
필요한 패키지를 설치하려면 터미널에 다음을 입력하십시오.
pip install -r requirements.txt터미널에서 다음을 입력합니다.
streamlit run main.py(뒤로 맨 위로)