LoRA 코드를 처음부터 작성하는 방법은 다음과 같습니다.
LoRA(Low-Rank Adaptation)는 LLM(대형 언어 모델)을 미세 조정하기 위해 설계된 인기 있는 기술입니다. 이 기술은 원래 Microsoft 연구원이 제안했으며 "LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS" 논문에 포함되었습니다. LoRA는 신경망의 모든 매개변수를 조정하는 대신 소수의 하위 행렬을 업데이트하는 데 중점을 두고 모델 학습에 필요한 계산량을 크게 줄인다는 점에서 다른 기술과 다릅니다.
LoRA의 미세 조정 품질은 전체 모델 미세 조정과 비슷하기 때문에 많은 사람들이 이 방법을 미세 조정 아티팩트라고 부릅니다. 출시 이후 많은 사람들이 이 기술에 대해 호기심을 갖고 연구를 더 잘 이해하기 위해 코드를 작성하고 싶어했습니다. 과거에는 적절한 문서가 부족한 것이 문제였지만 이제는 도움이 될 수 있는 튜토리얼이 있습니다.
이 튜토리얼의 저자는 유명한 기계 학습 및 AI 연구원인 Sebastian Raschka입니다. 그는 다양한 효과적인 LLM 미세 조정 방법 중에서 LoRA가 여전히 그의 첫 번째 선택이라고 말했습니다. 이를 위해 Sebastian은 LoRA를 처음부터 구축하기 위해 블로그 "Code LoRA From Scratch"를 작성했습니다. 그의 의견으로는 이것이 좋은 학습 방법입니다.
이 기사에서는 처음부터 코드를 작성하여 LoRA(낮은 순위 적응)를 소개합니다. Sebastian은 실험에서 DistilBERT 모델을 미세 조정하고 이를 분류 작업에 적용했습니다.
LoRA 방법과 기존의 미세 조정 방법을 비교한 결과, LoRA 방법은 테스트 정확도가 92.39%에 달하며, 이는 모델의 마지막 몇 레이어만 미세 조정한 것(86.22% 테스트 정확도)보다 우수합니다. ) 성능. 이는 LoRA 방법이 모델 성능을 최적화하는 데 분명한 이점이 있고 모델의 일반화 능력과 예측 정확도를 더 잘 향상시킬 수 있음을 보여줍니다. 이 결과는 더 나은 성능과 결과를 얻기 위해 모델 훈련 및 조정 중에 고급 기술과 방법을 채택하는 것이 중요함을 강조합니다.
Sebastian이 어떻게 이를 달성했는지 비교하면서 아래를 살펴보겠습니다.
처음부터 LoRA 작성
코드에서 LoRA 레이어를 설명하는 방법은 다음과 같습니다.
여기서 in_dim은 LoRA를 사용하여 수정하려는 레이어의 입력 차원이며, 이 out_dim에 해당합니다. 레이어의 출력 차원 알파 값이 높을수록 모델 동작에 대한 조정이 더 커짐을 의미하고 값이 낮을수록 그 반대를 의미합니다. 또한 이 기사에서는 무작위 분포에서 더 작은 값으로 행렬 A를 초기화하고 행렬 B를 0으로 초기화합니다.
LoRA가 작동하는 곳은 일반적으로 신경망의 선형(피드포워드) 계층이라는 점을 언급할 가치가 있습니다. 예를 들어, 두 개의 선형 레이어가 있는 간단한 PyTorch 모델 또는 모듈(예: Transformer 블록의 피드포워드 모듈일 수 있음)의 경우 전달 방법은 다음과 같이 표현될 수 있습니다.
이러한 선형 레이어의 출력에 LoRA 업데이트를 추가하는 것이 일반적이며 결과 코드는 다음과 같습니다.
기존 PyTorch 모델을 수정하여 LoRA를 구현하려는 경우 간단한 방법은 각 선형 레이어
이러한 개념은 아래 그림에 요약되어 있습니다.
이 기사에서는 LoRA를 적용하기 위해 신경망의 기존 선형 레이어를 결합된 레이어로 대체합니다. 원본 선형 레이어와 LoRALayer의 LinearWithLoRA 레이어.
미세 조정을 위해 LoRA를 사용하는 방법
LoRA는 GPT나 이미지 생성과 같은 모델에 사용할 수 있습니다. 간단한 설명을 위해 이 기사에서는 텍스트 분류를 위해 소규모 BERT(DistilBERT) 모델을 사용합니다.
이 문서에서는 새로운 LoRA 가중치만 훈련하므로 모든 모델 매개변수를 고정하려면 모든 훈련 가능한 매개변수의 require_grad를 False로 설정해야 합니다.
다음으로 print(model)를 사용하여 모델을 확인합니다.
업데이트된 구조를 확인하려면 인쇄(모델)를 사용하여 모델을 다시 확인하세요.
위에서 볼 수 있듯이 Linear 레이어가 LinearWithLoRA 레이어로 성공적으로 대체되었습니다.
위에 표시된 기본 하이퍼 매개변수를 사용하여 모델을 훈련하면 IMDb 영화 리뷰 분류 데이터 세트에서 다음과 같은 성능이 나타납니다.
검증 정확도: 89.98%
테스트 정확도: 89.44%
다음 섹션에서 이 문서에서는 이러한 LoRA 미세 조정 결과를 기존 미세 조정 결과와 비교합니다.
- 기존 미세 조정 방법과의 비교
- 이전 섹션에서 LoRA는 기본 설정에서 89.44%의 테스트 정확도를 달성했습니다. 이는 기존 미세 조정 방법과 어떻게 비교됩니까?
- 비교를 위해 이 기사에서는 DistilBERT 모델 교육을 예로 들어 또 다른 실험을 수행했지만 교육 중에 마지막 2개 레이어만 업데이트했습니다. 연구원들은 모든 모델 가중치를 동결한 다음 두 개의 선형 출력 레이어를 동결 해제하여 이를 달성했습니다.
마지막 두 레이어만 훈련하여 얻은 분류 성능은 다음과 같습니다.
훈련 정확도: 86.68%
검증 정확도: 87.26%
테스트 정확도: 86.22%
결과에 따르면 LoRA는 마지막 두 레이어를 미세 조정하는 기존 방법보다 성능이 뛰어나지만 4배 적은 매개 변수를 사용합니다. . 모든 레이어를 미세 조정하려면 LoRA 설정보다 450배 더 많은 매개변수를 업데이트해야 했지만 테스트 정확도는 2%만 향상되었습니다.
- LoRA 구성 최적화
- 위에 언급된 결과는 모두 기본 설정에서 LoRA에 의해 수행됩니다. 하이퍼 매개변수는 다음과 같습니다.
- 사용자가 다른 하이퍼 매개변수 구성을 시도하려는 경우 다음을 수행할 수 있습니다. 다음 명령을 사용하십시오.
그러나 최적의 하이퍼 매개변수 구성은 다음과 같습니다.
이 구성에서 결과는 다음과 같습니다.
- 검증 정확도: 92.96%
- 테스트 정확도: 92.39%
LoRA 설정(500k VS 66M)에서 훈련 가능한 매개변수의 작은 세트만 있더라도 정확도는 전체 미세 조정으로 얻은 정확도보다 여전히 약간 높습니다.
원본 링크: https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?cnotallow=f5fc72b1f6eeeaf74b648b2aa8aaf8b6
위 내용은 LoRA 코드를 처음부터 작성하는 방법은 다음과 같습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Oracle 데이터베이스를 만들려면 일반적인 방법은 DBCA 그래픽 도구를 사용하는 것입니다. 단계는 다음과 같습니다. 1. DBCA 도구를 사용하여 데이터베이스 이름을 지정하기 위해 DBNAME을 설정하십시오. 2. SySpassword 및 SystemPassword를 강력한 암호로 설정하십시오. 3. Al32UTF8로 문자 세트 및 NationalCharacterset을 세트; 4. 실제 요구에 따라 조정하도록 메모리 크기 및 테이블 스페이스 크기를 설정하십시오. 5. 로그 파일 경로를 지정하십시오. 고급 메소드는 SQL 명령을 사용하여 수동으로 생성되지만 더 복잡하고 오류가 발생하기 쉽습니다. 비밀번호 강도, 문자 세트 선택, 테이블 스페이스 크기 및 메모리에주의하십시오.

Oracle 데이터베이스를 만드는 것은 쉽지 않으므로 기본 메커니즘을 이해해야합니다. 1. 데이터베이스 및 Oracle DBMS의 개념을 이해해야합니다. 2. SID, CDB (컨테이너 데이터베이스), PDB (Pluggable Database)와 같은 핵심 개념을 마스터합니다. 3. SQL*Plus를 사용하여 CDB를 생성 한 다음 PDB를 만들려면 크기, 데이터 파일 수 및 경로와 같은 매개 변수를 지정해야합니다. 4. 고급 응용 프로그램은 문자 세트, 메모리 및 기타 매개 변수를 조정하고 성능 튜닝을 수행해야합니다. 5. 디스크 공간, 권한 및 매개 변수 설정에주의를 기울이고 데이터베이스 성능을 지속적으로 모니터링하고 최적화하십시오. 그것을 능숙하게 마스터 함으로써만 지속적인 연습이 필요합니다. Oracle 데이터베이스의 생성 및 관리를 진정으로 이해할 수 있습니다.

Oracle SQL 문의 핵심은 다양한 조항의 유연한 적용뿐만 아니라 선택, 삽입, 업데이트 및 삭제입니다. 인덱스 최적화와 같은 진술의 실행 메커니즘을 이해하는 것이 중요합니다. 고급 사용에는 하위 쿼리, 연결 쿼리, 분석 기능 및 PL/SQL이 포함됩니다. 일반적인 오류에는 구문 오류, 성능 문제 및 데이터 일관성 문제가 포함됩니다. 성능 최적화 모범 사례에는 적절한 인덱스를 사용하고 선택 *을 피하고 조항을 최적화하고 바운드 변수를 사용하는 것이 포함됩니다. Oracle SQL을 마스터하려면 코드 쓰기, 디버깅, 사고 및 기본 메커니즘 이해를 포함한 연습이 필요합니다.

MySQL의 현장 작동 안내서 : 필드를 추가, 수정 및 삭제합니다. 필드 추가 : Alter Table_Name ADD CORMEN_NAME DATA _TYPE [NOT NOT NORN NOT] [DEFAULT DEFAULT_VALUE] [기본 키] [기본 키] [AUTO_INCREMENT] 수정 필드 : ALTER TABLE_NAME COLUME_NAME DATY_TYPE [NOT NOT NOT NOT NOT DEFAULT_VALUE] [기본 키]

Oracle 데이터베이스의 무결성 제약 조건은 다음을 포함하여 데이터 정확도를 보장 할 수 있습니다. NULL : NULL 값은 금지됩니다. 고유 : 독창성을 보장하고 단일 널 값을 허용합니다. 기본 키 : 기본 키 제약 조건, 고유 한 강화 및 널 값을 금지합니다. 외국 키 : 테이블 간의 관계 유지, 외국 키는 기본 테이블 기본 키를 나타냅니다. 점검 : 조건에 따라 열 값을 제한합니다.

중첩 쿼리는 한 쿼리에 다른 쿼리를 포함시키는 방법입니다. 주로 복잡한 조건을 충족하고 여러 테이블을 연관시키고 요약 값 또는 통계 정보를 계산하는 데이터를 검색하는 데 사용됩니다. 예로는 평균 임금 이상의 직원 찾기, 특정 범주에 대한 주문 찾기 및 각 제품의 총 주문량 계산이 있습니다. 중첩 쿼리를 작성할 때는 다음을 따라야합니다. 하위 쿼리를 작성하고 결과를 외부 쿼리 (별명 또는 클로시로 참조)에 작성하고 쿼리 성능 (색인 사용)을 최적화하십시오.

Oracle은 세계 최대의 데이터베이스 관리 시스템 (DBMS) 소프트웨어 회사입니다. 주요 제품에는 다음과 같은 기능이 포함됩니다. 관계형 데이터베이스 관리 시스템 (Oracle Database) 개발 도구 (Oracle Apex, Oracle Visual Builder) Middleware (Oracle Weblogic Server, Oracle SOA Suite) 클라우드 서비스 (Oracle Cloud Infrastructure) 분석 및 비즈니스 인텔리전스 (Oracle Analytics Cloud, Oracle Essbase) 블록카 인 (Oracle Blockchain PLA

이 기사에서는 데비안 시스템에서 Apache의 로그 형식을 사용자 정의하는 방법에 대해 설명합니다. 다음 단계는 구성 프로세스를 안내합니다. 1 단계 : Apache 구성 파일 액세스 Debian 시스템의 기본 Apache 구성 파일은 일반적으로 /etc/apache2/apache2.conf 또는 /etc/apache2/httpd.conf에 있습니다. 다음 명령을 사용하여 루트 권한으로 구성 파일을 엽니 다.
