찰스 포스터의 글
Finetune에서는 자동 콘텐츠 생성 및 AI 기반 학습 자료 분류 및 추천을 포함하여 교육 기술에서 가장 도전적인 문제를 해결하기 위한 AI 솔루션을 구축하고 있습니다. 우리의 도구가 다루어야 할 주제가 K-12에서 근로자 개발에 이르기까지 다양하기 때문에, 모델이 다루는 폭과 깊이를 확장할 수 있는 방법에 많은 투자를 하고 있습니다. 이 접근 방식의 핵심 요소는 범용 모델이 충분하지 않은 도메인에서 전문화된 신경망을 훈련시키기 위한 유연한 방법입니다. 이 블로그 포스트에서는 이러한 방법을 탐구한 우리의 여정을 조금 나누고자 합니다.
파인튜닝
신경 언어 모델의 전형적인 파인튜닝은 훈련 가능한 모든 매개변수를 동시에 최적화하는 것을 포함하며, GPT-J와 같은 네트워크의 경우 수십억에 이를 수 있습니다. 이러한 규모에서는 파인튜닝 및 추론 과정이 간단하지 않으며, 이러한 모델의 광범위한 배포를 어렵게 만듭니다. 우리의 조사에서는 몇 가지 주요 문제가 가장 중요해 보였습니다:
- 이 트랜스포머 모델를 단순히 실행하는 것만으로도 GPU 메모리(VRAM)의 한계에 부딪히며, 파인튜닝 중에는 최적화되는 매개변수의 수와 추가로 소비되는 메모리 양 사이에 직접적인 관계가 있습니다.
- 네트워크의 모든 매개변수를 수정함으로써, 사전 훈련 동안 학습된 정보 흐름이 방해받아 잊어버리거나 몇 개의 샷 능력을 상실할 수 있습니다.
- 각 사용 사례에 맞춘 맞춤형 다기가바이트 모델을 제공하는 것은 용납할 수 없는 지연 및 비용 부담을 초래할 것입니다.
이러한 결합된 우려는 우리가 최근 문헌에서 다른 방법을 탐구하게 만들었습니다. 다행히도, 지난 1년 동안 자연어 처리 연구 분야에서는 사전 훈련된 언어 모델의 행동을 맞춤화하는 비용을 줄이는 다양한 방법이 개발되었습니다.
프롬프트 튜닝
우리가 추구한 원래의 접근법은 프롬프트 튜닝 또는 소프트 프롬프트라고 불립니다(Lester et al. 2021). 이 방법에서는 사전 훈련된 네트워크의 매개변수를 동결 상태로 유지합니다. 대신, 입력 프롬프트 토큰 앞에 소수의 학습 가능한 임베딩 벡터(일반적으로 10~20개)를 추가하고, 파인튜닝 데이터 세트에서 일반적인 언어 모델링 목표에 따라 이러한 임베딩을 조정합니다. 이러한 임베딩은 언어의 토큰을 나타내지 않으며, 대신 네트워크가 예측을 할 때 조건화할 수 있는 밀집한 맥락 저장소로 생각할 수 있습니다—주의 메커니즘을 통해—시퀀스의 토큰에 대한 예측을 수행합니다.
프롬프트 튜닝은 모델에 작은 런타임 비용만 추가합니다. 소프트 프롬프트는 킬로바이트 범위에 있으며 네트워크를 통해 병렬로 실행될 수 있습니다. 이러한 기능은 최근 AI 스토리텔링의 기술 배포에서 입증된 바와 같이 많은 동시 사용자를 지원하는 데 매력적입니다. 그러나 소프트 프롬프트를 HuggingFace의 트랜스포머와 같은 인기 있는 프레임워크에 통합하는 것은 복잡합니다. 인터페이스가 밀집 벡터가 아닌 토큰 인덱스의 시퀀스에서 작동하도록 설계되어 있기 때문입니다. 또한 소프트 프롬프트와 생성 간에 더 많은 맥락이 추가됨에 따라, 소프트 프롬프트와 토큰 맥락에 대한 조건화의 강도 간의 불균형이 발생하기 시작합니다. 런타임에서 수백 개의 토큰 맥락을 유연하게 추가할 수 있는 능력을 유지하는 것은 중요했습니다. 이는 항목 저자 작성 과정에서 추가적인 세밀한 제어 수단을 제공합니다. 특정 교과서의 페이지에서 콘텐츠에 집중하도록 모델을 유도하거나 독해 항목을 작성하거나 몇 개의 샷 예제를 제공하고 싶을 때, 장기적인 맥락화가 중요합니다.
저랭크 어댑터(LoRA)
우리는 나중에 LoRA 또는 저랭크 어댑터라는 방법으로 전환했습니다(Hu et al. 2021). 이 기술은 GPT-3 크기의 모델 작업을 하는 Microsoft의 연구자들에 의해 개발되었으며, 이전의 어댑터 접근 방식을 기반으로 합니다. 트랜스포머를 각 잔여 층에서 토큰 잠재 상태를 점진적으로 정제하는 것으로 생각하면, 어댑터의 개념은 주어진 층의 잠재 상태에 소규모의 입력 의존적인 델타(초기화는 no-op 상태로) 를 추가하는 것입니다. 이 부드러운 자극은 나중에 작업과 관련된 입력의 부분을 강조하는 등의 방법으로 하류에서의 행동을 조절할 수 있습니다.
저랭크 어댑터는 저랭크 부분공간을 타겟으로 하는 어댑터의 일종으로, 훈련해야 할 새로운 매개변수의 수를 줄입니다(D2에서 2 × D × r로, 여기서 D는 수천 단위). 소프트 프롬프트와 마찬가지로, 우리는 사전 훈련에서 얻은 지식을 보존하기 위해 네트워크의 원래 매개변수를 동결한 상태로 유지하고, 이 새로운 어댑터 매개변수만 조정합니다. 우리의 내부 테스트에서는 LoRA에서 좋은 지표를 보았습니다. 저예산 하드웨어에서 대규모 모델을 조정할 수 있을 뿐만 아니라, 어댑터 층이 사이에 있는 모델도 여전히 목표 도메인에 적응하면서 원래의 몇 개의 샷 능력을 많이 유지합니다. 특히, 저랭크 어댑터를 다른 프레임워크에 통합하는 것은 간단하여 기존 선형 층을 필요에 따라 선형 + 어댑터 층으로 간단하게 교체할 수 있습니다.
앞으로 나아가기
우리가 탐구한 개선 사항의 종류를 맛볼 수 있도록, 아래에는 다양한 튜닝 접근 방식을 통해 훈련된 모델에서 생성된 항목의 작은 선택을 공유합니다. 이러한 항목은 모두 간호 치료 제공과 관련된 동일한 세 가지 입력 프롬프트를 사용하여 생성되었습니다: 첫 번째는 여러 클라이언트의 요구를 우선시하는 데 초점을 맞추고, 두 번째는 팀 환경에서 행동을 취하는 것입니다.
항목 #1: 간호사가 외래 수술을 받을 예정인 클라이언트를 평가하고 있습니다. 다음 중 간호사가 평가할 환자는 누구입니까? (A) 제1형 당뇨병 환자 (B) 급성 췌장염 환자 (C) 정맥 항생제 요법이 필요한 환자 (D) 크론병 환자 항목 #2: 클라이언트가 울혈성 심부전 진단으로 병원에 입원했습니다. 클라이언트의 어머니는 치료를 거부하고 있습니다. 간호사가 취해야 할 조치는 무엇입니까? (A) 상황을 제공자에게 알리십시오. (B) 환자의 약물 목록을 확인하십시오. (C) 클라이언트의 의무 기록을 확인하십시오. (D) 클라이언트의 의사에게 클라이언트의 상태를 알리십시오.
항목 #3: 간호사가 소아과 병동에서 환자를 평가하고 있습니다. 클라이언트는 흉부 방사선 촬영을 포함한 진단 검사를 받을 예정입니다. 간호사가 다음으로 평가할 계획인 환자는 누구입니까? (A) 폐렴이 있는 아동으로 열이 나는 경우 (B) 발진이 있는 아동으로 약물에 반응하지 않는 경우 (C) 열이 나고 체온이 100.4도 이상인 아동 (D) 열이 나고 발진이 있는 아동 항목 #4: 신장 기능 부전 환자가 병원에 있으며 신장 이식을 받을 예정입니다. 클라이언트는 이식 외과의사가 무능력하다고 강하게 믿고 있습니다. 클라이언트는 다른 병원의 의사가 이식을 수행하는 것을 허용하지 않습니다. 간호팀장이 취해야 할 조치는 무엇입니까? (A) 이식 외과의사가 유능하다는 클라이언트의 진술을 받아서 이식 외과의사에게 전달하십시오. (B) 클라이언트에게 그녀의 주장을 뒷받침할 서명된 진술서를 요청하십시오. (C) 이식 외과의사에게 연락하여 클라이언트가 다른 병원의 외과의사에게 이식을 수행하는 것을 거부하는 이유를 확인하십시오. (D) 이식 외과의사에게 클라이언트가 이식을 거부하고 있다고 알리십시오.
항목 #5: 간호사가 다양한 침대 옆 스테이션에 클라이언트를 배정할 계획입니다. 간호사가 간호사 스테이션에 가장 가까운 침대 옆 스테이션에 배정해야 할 클라이언트는 누구입니까? (A) 폐색전증 의심 진단을 받고 CT 스캔이 필요한 클라이언트 (B) 배변에 도움이 필요한 클라이언트 (C) 흉부 X-레이 긴급 지시가 있는 클라이언트 (D) 기침으로 흉부 X-레이가 필요한 클라이언트 항목 #6: LPN이 지속적인 요도 카테터가 있는 클라이언트를 돌보고 있으며, 간호사에게 카테터 청소를 도와달라고 요청하고 있습니다. 간호사가 취해야 할 조치는 무엇입니까? (A) 클라이언트에게 청소 용액을 제공해야 하며 절차에 대한 클라이언트의 동의를 받아야 한다고 설명하십시오. (B) LPN에게 도움을 요청하십시오. (C) 클라이언트가 카테터를 청소하도록 도와주겠다고 제안하십시오. (D) LPN에게 간호사가 그녀를 도와주겠다고 확신하십시오.
우리는 기준 모델에서 가장 좋은 항목들이 상당히 유창하고 논리적으로 일관되지만, 종종 제약이 부족하거나(#1과 같이) 간호 분야에 대한 지식이 거의 필요하지 않다는 것을 관찰할 수 있습니다(#3과 같이). 기준 항목과 비교할 때, 프롬프트 튜닝 및 저랭크 어댑터 모델의 항목들은 자극, 줄기 및 옵션에서 더 많은 세부 정보를 포함하고 있습니다. 주제는 도메인과 관련이 있으며, 배경 지식에만 의존하는 것이 아니라 간호 치료 관리에서 특정 지식을 요구합니다. 더욱이, 저랭크 어댑터 모델의 항목들은 더 일관된 형식을 가지고 있습니다. 예를 들어, 항목들은 평가에서 나타날 가능성이 높은 언어에 따라 "환자" 대신 "클라이언트"를 일관되게 참조합니다(#5와 #1 및 #3 비교). 또한, 시나리오 내에서 여러 개인에 대한 참조를 성공적으로 추적합니다(#6과 #4 비교).
도메인 범위, 스타일 일관성 및 논리적 일관성의 개선은 신경 언어 모델의 유용성에서 상당한 개선으로 이어질 수 있습니다. 이것은 시작에 불과합니다: 기술이 성숙함에 따라, 대규모로 맞춤형 및 제어 가능한 자연어 모델을 생성하기 위한 더 많은 방법이 발견될 것입니다. 그리고 이러한 방법이 발견됨에 따라, 우리는 학계, 산업 및 독립 연구에서 최선을 계속해서 Finetune 제품에 통합할 것입니다.
이 블로그 포스트의 개발에 친절하고 유용한 피드백을 제공해 주신 Nick Koprowicz, Jesse Hamer, Saad Khan 및 Ogden Morse에게 진심으로 감사드립니다.
참고문헌
Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., … & Chen, W. (2021). Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685.
Lester, B., Al-Rfou, R., & Constant, N. (2021). The power of scale for parameter-efficient prompt tuning. arXiv preprint arXiv:2104.08691.