🧁

(230430) Review: HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace

ChatGPT와 Hugging Face를 활용하여 복잡한 Task를 수행하는 AGI 시스템, HuggingGPT를 구축한 MS의 논문 사실, 특별한 내용은 없음.. 누구나 예상할 수 있는 방법론으로 논문보다는 재미있는 뉴스 Article 느낌 그러나, ChatGPT를 비롯한 LLM의 Zero/Few-Shot 성능이 이 정도였나? 하는 놀라움이 있음

Introduction

본 논문에서 최종적으로 구현하려는 시스템은 Artificial General Intelligence (AGI) or Advanced Artificial Intelligence
AGI란.. 보편적인 사람의 인지, 업무 수행 능력으로 정의할 수 있음
구체적으로, AGI는 다양한/복수의 Modality 입/출력을 지원하며..
ex. Text+Image 입력, Image 3장 동시 입력, Image-to-Voice 등
복잡한 Task 처리/수행 능력을 가짐
최근 ChatGPT, GPT-3.5 등 Instruction-Following 방식으로 학습된 LLM들이 사람과 유사한 인지, 업무 수행 능력을 자랑하지만, AGI 시스템을 구축하는 데에 다음과 같은 한계점을 보임
Text로 제한된 입/출력 형태
Sub-Tasks 구성/조율 능력 부재
일반적으로 복잡한 Task는 여러 개의 Sub-Tasks로 구성 → 다양한 Expert (Fine-Tuned) 모델들을 필요로 함
그러나, LLM은 여러 모델들을 조율 (Scheduling, Cooperation)하는 능력을 갖지 못함
부족한 Sub-Tasks 수행 능력
훌륭한 Zero/Few-Shot 성능에도 불구하고, Downstream Tasks에서 Expert 모델들보다 좋은 성능을 보이기는 어려움
이에 본 논문은 ChatGPT에 Hugging Face를 접목하여 AGI 시스템, HuggingGPT를 구축하는 방법론을 제안함

Proposed System: HuggingGPT

다양한 Sub-Tasks를 수행할 수 있는 Expert 모델들이 이미 Hugging Face (Model Hub)에 Description과 함께 공개되어 있음..
유저의 요청을 처리하는 데에 적합한 모델들을 Hugging Face에서 검색하여 실제로 활용 (Inference)할 수 있는 Controller만 구축하면 됨 → ChatGPT Prompting
HuggingGPT는 다음과 같은 4단계를 수행하여 유저의 요청을 처리함
Task Planning (→ ChatGPT Prompting)
유저의 요청을 Sub-Tasks로 분해
Sub-Tasks 간의 순서, 입/출력, 의존성 정의
Model Selection (→ ChatGPT Prompting)
Hugging Face의 모델 Description을 기반으로 각 Sub-Tasks에 적합한 모델 부여
Task Execution
실제 모델 추론 수행
Hugging Face의 Inference Endpoints와 Local Endpoints 동시 활용
의존성이 없는 Sub-Tasks 병렬 수행 → Acceleration
Response Generation (→ ChatGPT Prompting)
이전 단계들의 결과물, 대화 내용을 요약하여 답변 생성
정의된 JSON 포맷에 맞게 ChatGPT가 답변을 생성하도록..
Temperature 0으로 설정
logit_bias 수정 (OpenAI Reference 참조)하여 Decoding 수행