우리는 ShareGPT에서 수집된 사용자 공유 대화를 통해 LLaMA를 미세 조정하여 훈련시킨 오픈소스 챗봇인 Vicuna-13B를 소개합니다. GPT-4를 기준으로 사용한 예비 평가에 따르면 Vicuna-13B는 OpenAI ChatGPT와 Google Bard의 품질 90%* 이상을 달성하며 LLaMA와 Stanford Alpaca와 같은 다른 모델을 90%*의 경우에 능가합니다. Vicuna-13B의 훈련 비용은 대략 $300입니다. code와 weights, 그리고 온라인 demo는 비상업적 사용을 위해 공개적으로 사용 가능합니다.
Vicuna의 성능은 어떠한가요?
70K의 사용자가 공유한 ChatGPT 대화를 통해 Vicuna를 미세 조정한 후, 우리는 Vicuna가 Alpaca와 비교할 때 더 상세하고 잘 구조화된 답변을 생성할 수 있게 되었음을 발견했습니다 (아래 예시 참조). 그 품질은 ChatGPT와 동등한 수준입니다.
챗봇을 평가하는 것은 결코 간단한 작업이 아닙니다. 최근의 GPT-4의 발전으로 우리는 그 능력이 인간과 같은 수준에 도달해 챗봇의 벤치마크 생성 및 성능 평가를 위한 자동화된 평가 프레임워크를 가능하게 했는지 궁금해졌습니다. 우리의 초기 연구 결과는 GPT-4가 챗봇의 답변을 비교할 때 매우 일관된 순위와 상세한 평가를 생성할 수 있다는 것을 보여줍니다 (위의 GPT-4 판단 예시 참조). GPT-4를 기반으로 한 예비 평가는 그림 1에서 요약되어 있으며, Vicuna가 Bard/ChatGPT의 90%* 능력을 달성한다는 것을 보여줍니다. 이 제안된 프레임워크는 챗봇 평가를 자동화할 잠재력을 보여주지만, 아직 엄밀한 접근법은 아닙니다. 챗봇을 위한 평가 시스템을 구축하는 것은 추가 연구가 필요한 여전히 해결되지 않은 문제입니다. 평가 섹션에서 더 자세한 내용이 제공됩니다.
개요
대규모 언어 모델(LLMs)의 빠른 발전은 OpenAI의 ChatGPT와 같이 전례 없는 지능 수준의 챗봇 시스템의 혁명을 가져왔습니다. 그러나 뛰어난 성능에도 불구하고 ChatGPT의 훈련 및 아키텍처의 세부 사항은 여전히 불명확하며, 이로 인해 이 분야의 연구와 오픈소스 혁신이 방해받고 있습니다. Meta LLaMA와 Stanford Alpaca 프로젝트에서 영감을 받아, 우리는 향상된 데이터셋과 사용하기 쉽고 확장 가능한 인프라를 기반으로 한 오픈소스 챗봇인 Vicuna-13B를 소개합니다. ShareGPT.com에서 수집한 사용자 공유 대화를 기반으로 LLaMA 기본 모델을 미세 조정함으로써, Vicuna-13B는 Stanford Alpaca와 같은 다른 오픈소스 모델에 비해 경쟁력 있는 성능을 보여주었습니다. 이 블로그 게시물은 Vicuna-13B의 성능에 대한 예비 평가를 제공하며, 그 훈련 및 제공 인프라를 설명합니다. 또한, 우리는 커뮤니티에게 우리의 온라인 데모와 상호 작용하여 이 챗봇의 능력을 테스트해보도록 초대합니다.
그림 2는 우리의 작업 개요를 제공합니다. 시작으로, 우리는 사용자들이 자신의 ChatGPT 대화를 공유할 수 있는 ShareGPT.com에서 약 70K의 대화를 수집하였습니다. 다음으로, 멀티 턴 대화와 긴 시퀀스를 더 잘 다룰 수 있도록 Alpaca에 의해 제공된 훈련 스크립트를 개선했습니다. 훈련은 PyTorch FSDP를 사용하여 8개의 A100 GPU에서 하루 동안 완료되었습니다. 데모를 제공하기 위해, 우리는 경량의 분산 서비스 시스템을 구현하였습니다.
모델 품질의 예비 평가를 위해, 우리는 80개의 다양한 질문 집합을 생성하고 GPT-4를 사용하여 모델 출력을 판단하였습니다. 두 가지 다른 모델을 비교하기 위해, 우리는 각 질문에 대해 각 모델의 출력을 하나의 프롬프트로 결합합니다. 프롬프트들은 그 후 GPT-4로 전송되며, 어느 모델이 더 나은 응답을 제공하는지 평가합니다. LLaMA, Alpaca, ChatGPT, 그리고 Vicuna의 자세한 비교는 아래 표 1에서 보여집니다.
훈련
Vicuna는 공용 API를 통해 ShareGPT.com에서 모은 약 70K의 사용자 공유 대화를 사용하여 LLaMA 기본 모델을 미세 조정함으로써 생성되었습니다. 데이터 품질을 보장하기 위해, 우리는 HTML을 마크다운으로 다시 변환하고 부적절하거나 저품질의 샘플을 필터링합니다. 추가로, 우리는 모델의 최대 컨텍스트 길이에 맞게 길이가 긴 대화를 더 작은 세그먼트로 나눕니다.
우리의 훈련 레시피는 Stanford’s alpaca를 기반으로 다음의 개선 사항들을 도입하였습니다.
- Multi-turn conversations: 우리는 멀티 턴 대화를 고려하여 훈련 손실을 조정하고, 챗봇의 출력에만 미세 조정 손실을 계산합니다.
- “멀티 턴 대화“라는 용어는 대화가 여러 차례에 걸쳐 진행되는 것을 의미합니다. 예를 들면, 한 사용자의 질문과 챗봇의 답변, 그 다음에 다시 사용자의 질문과 챗봇의 답변 등이 연속적으로 이루어진 대화 패턴을 가리킵니다. 일반적인 단방향의 질문-답변 형식과는 달리 멀티 턴 대화는 보다 복잡한 대화의 맥락과 연속성을 요구합니다.
- 해당 문장에서는, Vicuna의 훈련 과정에서 이러한 멀티 턴 대화를 고려하여 훈련 손실을 조정했다고 설명하고 있습니다. 이는 모델이 멀티 턴 대화의 맥락을 더 잘 이해하도록 도와줍니다.
- 더불어 “챗봇의 출력에만 미세 조정 손실을 계산한다“는 부분은, 미세 조정 과정에서 모델이 올바른 답변을 생성하도록 집중적으로 학습하는 것을 의미합니다. 이러한 방식은 챗봇의 응답 품질을 향상시키기 위해 사용됩니다.
- 메모리 최적화: Vicuna의 긴 컨텍스트 이해를 가능하게 하기 위해, 우리는 알파카의 최대 컨텍스트 길이 512를 2048로 확장하는데, 이는 GPU 메모리 요구 사항을 크게 증가시킵니다. 우리는 gradient checkpointing과 flash attention을 활용하여 메모리 부담을 해결합니다.
- 스팟 인스턴스를 통한 비용 감소: 40배 큰 데이터셋과 4배 긴 시퀀스 길이로 인한 훈련 비용은 상당한 도전을 제기합니다. 우리는 SkyPilot managed spot을 사용하여, 사전 중단 및 자동 구역 전환을 위한 더 저렴한 스팟 인스턴스를 활용하여 비용을 절감합니다. 이 솔루션은 7B 모델의 훈련 비용을 $500에서 대략 $140로, 그리고 13B 모델의 훈련 비용을 약 $1K에서 $300으로 크게 줄입니다.
서비스 제공
우리는 분산된 작업자들로 여러 모델을 서비스 할 수 있는 서비스 시스템을 구축하였습니다. 이 시스템은 온-프레미스 클러스터와 클라우드 모두에서 GPU 작업자를 유연하게 플러그인 할 수 있도록 지원합니다. 결함 허용 컨트롤러와 SkyPilot의 관리형 스팟 기능을 활용하여, 이 서비스 시스템은 여러 클라우드의 더 저렴한 스팟 인스턴스와 잘 작동하여 서비스 제공 비용을 절감할 수 있습니다. 현재는 경량 구현이며, 우리의 최신 research를 더 통합하도록 작업 중입니다.
“서비스 제공”이란 특정 서비스나 기능을 사용자에게 제공하는 과정이나 방법을 의미합니다. 이 문맥에서는 챗봇 또는 언어 모델과 같은 딥러닝 모델을 사용자에게 실시간으로 제공하기 위한 시스템 구축을 가리킵니다.
원문에 따르면, Vicuna 모델을 위한 “서비스 제공” 시스템을 다음과 같이 설계했습니다:
- 분산 시스템: 여러 대의 서버나 기기에 분산되어 서비스를 제공하기 위한 시스템을 구축했습니다. 이러한 구조는 효율적인 자원 활용 및 높은 트래픽에 대한 대응 능력을 갖추기 위함입니다.
- GPU 활용: 서비스 제공 시스템은 온-프레미스 클러스터(사내에 구축된 서버 클러스터)와 클라우드 모두에서 GPU 작업자(컴퓨터 리소스)를 추가할 수 있도록 설계되었습니다. GPU는 복잡한 딥러닝 모델의 연산에 필수적이므로 이런 구조는 서비스의 빠른 응답 시간을 보장하는데 중요합니다.
- 비용 절감: SkyPilot의 관리형 스팟 기능을 활용하여 여러 클라우드에서 제공하는 저렴한 스팟 인스턴스를 사용하게 되어 서비스 제공 비용을 절감했습니다. 스팟 인스턴스는 일반 클라우드 인스턴스보다 비용이 저렴하지만, 사용 중에도 중단될 수 있습니다. SkyPilot은 이런 인스턴스의 중단을 관리해주기 때문에 비용을 절감하면서도 안정적인 서비스 제공이 가능해집니다.
- 연구 통합: 현재는 경량 구현에 초점을 맞추었지만, 차후에는 최신 연구를 더 통합할 예정이라고 언급하고 있습니다. 이는 서비스 제공 시스템이 지속적으로 발전하고 개선되고 있음을 의미합니다.
요약하면, “서비스 제공”은 사용자에게 딥러닝 모델의 기능을 실시간으로 제공하기 위해 필요한 시스템 및 인프라를 구축하는 과정을 의미하며, Vicuna의 경우 분산 시스템, GPU 활용, 비용 절감, 연구 통합 등 다양한 방법을 통해 효율적이고 비용 절감적인 서비스 제공을 추구하고 있습니다.
How To Evaluate a Chatbot?
챗봇을 평가하는 방법은 어렵습니다. 언어 이해, 추론 및 맥락 인식을 검토해야 하기 때문입니다. AI 챗봇이 점점 발전하면서 현재의 개방형 벤치마크가 더 이상 충분하지 않을 수 있습니다. 예를 들어, Stanford의 Alpaca에서 사용된 평가 데이터셋인 self-instruct는 최첨단의 챗봇들에게 효과적으로 답변될 수 있어, 인간이 성능 차이를 구별하기 어렵게 만듭니다. 기타 제한 사항으로는 훈련/테스트 데이터 오염과 새로운 벤치마크를 만드는 데 있어 potenially 높은 비용이 있습니다. 이러한 문제를 해결하기 위해, 우리는 챗봇 성능 평가를 자동화하기 위해 GPT-4를 기반으로 한 평가 프레임워크를 제안합니다.
먼저, Fermi 문제, 역할극 시나리오, 코딩/수학 과제와 같은 여덟 가지 질문 카테고리를 고안하여 챗봇의 성능의 다양한 면을 테스트합니다. 세심한 프롬프트 엔지니어링을 통해, GPT-4는 기본 모델들이 어려워하는 다양하고 도전적인 질문을 생성할 수 있습니다. 우리는 카테고리당 열 가지 질문을 선택하고 LLaMA, Alpaca, ChatGPT, Bard, 그리고 Vicuna의 다섯 챗봇으로부터 답변을 수집합니다. 그 다음 GPT-4에게 도움말, 관련성, 정확성 및 세부 사항을 기반으로 답변의 품질을 평가하도록 요청합니다. 우리는 GPT-4가 상대적으로 일관된 점수뿐만 아니라 왜 그러한 점수가 주어졌는지에 대한 자세한 설명도 생성할 수 있다는 것을 발견했습니다(자세한 예시 link). 그러나, 우리는 또한 GPT-4가 코딩/수학 작업을 판단하는 데 그다지 뛰어나지 않다는 것을 알아챘습니다.
그림 3은 모든 기본 모델과 Vicuna 간의 비교 결과를 보여줍니다. GPT-4는 90% 이상의 질문에서 Vicuna를 최첨단 오픈 소스 모델(LLaMA, Alpaca)보다 더 선호하며, 상용 모델(ChatGPT, Bard)과 경쟁력 있는 성능을 보여줍니다. 질문의 45%에서 GPT-4는 Vicuna의 응답을 ChatGPT의 응답과 동등하거나 더 우수하다고 평가했습니다. GPT-4가 각 응답에 대해 10점 척도로 점수를 부여하므로, 80개 질문에 대한 각 모델의 점수를 합하여 각(기본 모델, Vicuna) 비교 쌍의 총 점수를 계산합니다. 표 2에 나타난 바와 같이, Vicuna의 총 점수는 ChatGPT의 92%에 해당합니다. 최근의 발전에도 불구하고, 이 챗봇들은 여전히 기본 수학 문제 해결이나 코딩 능력의 제한 등의 문제에 직면하고 있습니다.
이 제안된 평가 프레임워크는 챗봇을 평가하는 잠재력을 보여주지만, 대규모 언어 모델이 환상을 일으킬 수 있기 때문에 아직 엄격하거나 성숙한 접근 방법은 아닙니다. 챗봇을 위한 포괄적이고 표준화된 평가 시스템을 개발하는 것은 추가 연구가 필요한 여전히 해결되지 않은 문제입니다.
수정본: 이 블로그 포스트 이후, 우리는 이 GPT4 기반 평가 방법에 대해 더 깊은 연구를 수행했습니다. 새로운 ‘Judging LLM-as-a-judge paper ‘ 논문을 읽고 새로운 평가 tool를 사용해 보시기 바랍니다.
제한 사항
우리는 Vicuna가 다른 대규모 언어 모델과 유사한 일부 제한 사항을 가지고 있다는 것을 알아챘습니다. 예를 들면, 추론이나 수학과 관련된 작업에는 좋지 않으며, 자신을 정확하게 식별하거나 출력의 사실적 정확성을 보장하는 데 제한이 있을 수 있습니다. 또한, 안전성을 보장하거나 잠재적인 독성이나 편견을 완화하는 데 충분히 최적화되지 않았습니다. 안전 문제를 해결하기 위해, 우리는 온라인 데모에서 부적절한 사용자 입력을 필터링하기 위해 OpenAI 중재 API를 사용합니다. 그럼에도 불구하고, Vicuna가 이러한 제한 사항을 해결하기 위한 미래의 연구를 위한 오픈 소스 시작점으로 활용될 수 있을 것으로 기대합니다.
Release
In our first release, we will share the training, serving, and evaluation code on a GitHub repo: https://github.com/lm-sys/FastChat. We also released the Vicuna-13B model weights. There is no plan to release the dataset. Join our Discord server and follow our Twitter to get the latest updates.