안녕하세요! 오늘은 Meta에서 공개한 최신 언어모델 Llama 3.1에 대해서 알아보겠습니다. Llama 3.1은 8B, 70B, 405B 세 종류의 매개변수로 출시되었으며, 128K 문맥 길이와 8개 언어 지원을 특징으로 하는 오픈 소스 AI 모델로, 합성 데이터 생성, 모델 증류, 실시간 및 배치 추론, 호출, 지속적 사전 훈련 등을 지원하며, Llama Guard 3와 Prompt Guard를 포함한 안전 도구를 제공하고, Llama 스택 API를 통해 개발자들이 쉽게 활용할 수 있습니다. 이 블로그에서는 Llama 3.1의 개요, 주요 특징 및 아키텍처 등을 살펴보고, Llama 3.1 70B 모델의 코딩 및 추론성능을 테스트해 보겠습니다.
https://ai.meta.com/blog/meta-llama-3-1/
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Llama 3.1 개요
Llama 3.1은 Meta가 개발한 최신 AI 모델로, 8B, 70B, 405B 세 종류의 매개변수 크기를 가지며, 8개의 언어(영어, 스페인어, 프랑스어, 독일어, 이탈리아어, 포르투갈어, 네덜란드어 및 러시아어)를 지원하고, 기존 Llama 3 모델의 8K 문맥 길이를 128K로 확장하여 더 복잡한 작업을 처리할 수 있습니다.
모델 | 매개변수 크기 | 특징 |
Llama 3.1 8B | 80억개 | - 작은 크기로, 리소스가 제한된 환경에 적합. - 다국어 및 긴 텍스트 처리(128K 문맥 길이) 지원. |
Llama 3.1 70B | 700억개 | - 중간 크기로, 복잡한 작업에 적합. - 향상된 언어 이해력과 문맥 처리. 합성 데이터 생성 및 모델 증류 가능. |
Llama 3.1 405B | 4,050억개 | - 최대 크기로, 최고 수준의 성능과 유연성 제공. 복잡한 NLP 작업에 최적화. - Llama Guard 3와 Prompt Guard 같은 고급 안전 도구 포함. |
Llama 3.1의 컨텍스트 길이는 OpenAI의 최신 모델 GPT-4o mini와 동일한 128,000개 토큰으로, 이는 Llama 3의 8,192개 토큰보다 크게 증가한 것이며, 이렇게 늘어난 컨텍스트 길이를 통해 모델은 뉘앙스와 문맥을 더 잘 이해할 수 있고 향상된 추론 기능을 제공할 수 있습니다.
특성 | Llama 3 | Llama 3.1 |
문맥 길이 | 최대 8K | 최대 128K |
지원 언어 수 | 4개 | 8개 |
주요 모델 | 8B, 70B | 405B, 70B, 8B |
합성 데이터 생성 | 제한적 | 확장됨 |
모델 증류 | 없음 | 가능 |
안전 도구 | 기본적 | Llama Guard 3, Prompt Guard 포함 |
API 및 생태계 지원 | 제한적 | Llama Stack API, 25개 이상의 파트너 |
실시간 및 배치 추론 | 지원 | 향상된 지원 |
기능 호출 | 제한적 | 지원 |
사전 훈련 | 기본 | 지속적 사전 훈련 지원 |
위 Llama 3와 Llama 3.1 비교표에서 Llama Stack API는 Meta가 제안한 표준 인터페이스로, 다양한 애플리케이션과 쉽게 통합할 수 있도록 설계되었습니다. 이 API는 표준화된 인터페이스를 제공하여 복잡한 설정 없이 모델을 사용할 수 있게 하고, 타사 프로젝트와의 호환성을 강화하며 개발자들이 모델을 커스터마이징 할 수 있는 유연성을 제공합니다.
또한, Llama 3.1은 25개 이상의 파트너와 협력하여 생태계를 구축하고 다양한 플랫폼에서 사용 가능합니다. 주요 파트너에는 AWS, Google Cloud, Microsoft Azure, IBM WatsonX 등 클라우드 제공업체, NVIDIA, Dell, Intel 등 하드웨어 제조업체, Databricks, Snowflake, Hugging Face 등 데이터 및 AI 서비스 제공업체가 포함됩니다. 이를 통해 사용자는 클라우드 인프라를 활용하고, 고성능 컴퓨팅 환경에서 최적화된 모델을 실행하며, 다양한 데이터 소스와 쉽게 연계하고, 안전하게 Llama 모델을 운영할 수 있습니다.
다음은 Llama 3.1의 주요 특징에 대한 설명입니다.
- 다국어 지원 및 긴 문맥 처리: Llama 3.1은 8개 언어를 지원하며, 문맥 길이를 128K로 확장하여 더 긴 텍스트를 효과적으로 처리할 수 있습니다. 이를 통해 긴 문서 요약, 다국어 대화형 에이전트, 코딩 도우미와 같은 고급 사용 사례를 지원합니다.
- 합성 데이터 생성 및 모델 증류: Llama 3.1은 합성 데이터 생성과 모델 증류를 통해 더 작은 모델들의 성능을 향상시킬 수 있습니다. 이러한 기능은 AI 연구와 개발에 있어 새로운 가능성을 열어줍니다. 특히, 405B 모델은 이전에 오픈 소스 모델에서는 볼 수 없었던 스케일의 모델 증류(작은 모델의 효율성을 달성하면서 큰 모델의 성능을 유지하는 기술)를 가능하게 합니다.
- 향상된 안전 및 보안 도구: Meta는 Llama 3.1의 책임 있는 사용을 장려하기 위해 새로운 보안 및 안전 도구를 도입했습니다. Llama Guard 3와 Prompt Guard는 모델의 안전한 사용을 보장하며, 잠재적인 악용을 방지하기 위해 설계되었습니다. 이러한 도구들은 개발자들이 책임감 있게 AI를 개발하고 배포할 수 있도록 도와줍니다.
- Llama 스택 및 파트너 생태계: Llama 3.1의 출시와 함께 Meta는 Llama 스택 API에 대한 의견 요청을 공개했습니다. 이는 타사 프로젝트가 Llama 모델을 보다 쉽게 활용할 수 있도록 표준 인터페이스를 제공하기 위함입니다. 또한, AWS, NVIDIA, Databricks, Google Cloud 등 25개 이상의 파트너와 협력하여 Llama 3.1의 생태계를 구축하고, 즉시 사용 가능한 서비스를 제공합니다.
- 실시간 및 배치 추론: Llama 3.1은 실시간 및 배치 추론을 지원하여 다양한 AI 애플리케이션에서 유연하게 사용할 수 있습니다. 이를 통해 개발자들은 고도의 컴퓨팅 리소스를 요구하는 작업을 효율적으로 처리할 수 있습니다.
- 기능 호출 및 지속적 사전 훈련: Llama 3.1은 기능 호출과 지속적인 사전 훈련을 지원하여, 모델을 더욱 효과적으로 사용할 수 있도록 합니다. 이러한 기능은 AI 개발자들이 특정 애플리케이션에 맞춘 맞춤형 모델을 생성하고, 지속적으로 모델의 성능을 개선할 수 있도록 도와줍니다.
Llama 3.1 성능 및 아키텍처
Llama 3.1 405B의 성능을 보면 MMLU, IFEval, HumanEval 등의 벤치마크에서 뛰어난 언어 이해 및 생성 능력을 보여주며, 405B 모델은 GPT-4를 능가합니다. 수학적 추론(GSM8K)과 복잡한 추론(ARC Challenge)에서도 높은 점수를 기록하였으며, 긴 텍스트 처리 능력도 우수하여 ZeroSCROLLS/QuALITY에서 95.2점을 받았습니다. 도구 활용 능력(BFCL, Nexus)과 다국어 지원(Multilingual MGSM)에서는 GPT-4와 Claude 3.5 Sonnet에 비해 다소 부족합니다.
위 표에서 Llama 3.1 405B 모델의 강점은 다음과 같습니다.
- 뛰어난 언어 모델링 능력: MMLU, IFEval, HumanEval 등 다양한 언어 모델링 벤치마크에서 매우 높은 점수를 기록하며 뛰어난 언어 이해 및 생성 능력을 보여줍니다. 특히 405B 모델의 경우 대부분 벤치마크에서 GPT-4를 능가하는 모습을 보여줍니다.
- 강력한 수학적 추론 능력: GSM8K 벤치마크에서 96.8점이라는 높은 점수를 기록하며 다른 모델들과 비교했을 때 월등한 수학 문제 해결 능력을 보여줍니다.
- 높은 수준의 추론 능력: ARC Challenge에서 96.9점으로, 복잡한 추론 능력이 요구되는 상황에서도 준수한 성능을 보여줍니다. 긴 텍스트 처리 능력: ZeroSCROLLS/QuALITY 벤치마크에서 95.2점으로, 긴 텍스트를 효과적으로 처리하고 이해하는 능력을 입증했습니다.
벤치마크 결과에서 Llama 3.1 405B 강력한 언어 모델링 능력, 수학적 추론 능력, 추론 능력, 긴 텍스트 처리 능력을 갖춘 뛰어난 언어 모델입니다. 하지만, 도구 활용 능력과 다국어 지원 측면에서는 아직 개선의 여지가 있습니다.
위 벤치마크 비교표를 보면 Llama 3.1은 모델 크기가 커짐에 따라 전반적인 성능이 크게 향상되는 것을 확인할 수 있습니다. 특히 70B 모델은 추론 능력과 코드 생성 능력에서 강점을 보이며, 긴 텍스트 처리 능력 또한 개선되었습니다. 하지만, 도구 활용 능력은 여전히 개선의 여지가 있으며, 특히 8B 모델의 경우 매개변수 크기에 비해 준수한 성능을 보였으나, 0-shot MATH 벤치마크에서는 51.9점으로 낮은 점수를 보였습니다. 이는 복잡한 수학적 추론 문제 해결에 어려움을 겪을 수 있음을 의미합니다. 수학적 추론 능력과 긴 텍스트 처리 능력에 있어 추가적인 발전이 필요해 보입니다.
Llama 3.1의 아키텍처는 표준 디코더-온리 트랜스포머 모델로, 몇 가지 작은 조정을 통해 안정적인 훈련이 가능하도록 설계되었습니다. 이번 버전에서는 15조 개 이상의 토큰으로 모델을 훈련시키기 위해 16,000개 이상의 H100 GPU를 사용하여 대규모 훈련을 진행했습니다. 훈련 과정에서는 슈퍼바이즈드 파인 튜닝(SFT)과 직접 선호 최적화(DPO)를 활용하여 고품질의 합성 데이터를 생성하고, 이를 여러 번 반복하여 성능을 극대화했습니다. 이와 같은 접근 방식을 통해 Llama 3.1은 짧은 문맥에서도 높은 품질의 답변을 유지하면서도, 긴 문맥에서도 일관된 성능을 발휘할 수 있습니다.
Llama 3.1은 입력 텍스트를 토큰화하고, 각 토큰을 임베딩하여 Self-attention 및 Feedforward network 레이어를 통해 텍스트의 복잡한 관계와 의미를 학습합니다. 그리고 입력 시퀀스와 생성된 출력의 컨텍스트를 사용하여 다음 단어를 예측하는 Autoregressive 디코딩 방식을 통해 입력 텍스트에 대한 응답으로 일관되고 문맥적으로 적절한 텍스트를 생성합니다.
Llama 3.1 70B/405B 테스트
다음은 Llama 3.1 70B/405B 모델의 코딩 및 추론성능을 테스트해 보겠습니다. 테스트 환경은 Windows 11 Pro(23H2), WSL2, 파이썬 버전 3.11, 비주얼 스튜디오 코드(이하 VSC) 1.91.1이며, VSC를 실행하여 "WSL 연결"을 통해 Windows Subsystem for Linux(WSL) Linux 환경에 액세스 하도록 구성하고, 채팅 인터페이스로 PraisonAI Chat과 FireworksAI를 사용하였습니다.
1. 가상환경 생성 및 활성화: VSC에서 메인 디렉토리를 생성한 후, 아래 명령어로 가상환경을 생성하고 활성화합니다.
python3.11 -m venv myenv
source myenv/bin/activate
2. 의존성 패키지 설치 및 API KEY 설정: Llama-3.1 모델과 대화하기 위한 웹 기반 채팅 인터페이스, PraisonAI [Chat] 패키지를 설치하고 https://console.groq.com/keys 에서 Groq API KEY를 발급받아 설정합니다. FrieworksAI의 API KEY는 https://fireworks.ai/account/api-keys 에서 발급받으시면 됩니다.
pip install praisonai[chat]
export GROQ_API_KEY=발급받은 API KEY
export FIREWORKS_API_KEY=발급받은 API KEY
3. 챗봇 인터페이스 실행: "praisonai chat"을 입력하여 채팅 인터페이스를 실행하면 http://localhost:8084/주소에서 웹 채팅 인터페이스 로그인 창이 뜨며, ID와 패스워드에 admin/admin을 입력하여 로그인합니다.
praisonai chat
4. 모델 설정: 사용자 프롬프트 입력창 왼쪽 설정 아이콘을 클릭하고 Groq은 "groq/llama-3.1-70b-versatile", FireworksAI는 "firewoks_ai/llama-v3p1-70b-instruct" 를 입력합니다.
코딩 테스트
Llama 3.1 70B 모델의 코딩 테스트는 Python, JavaScript, C++에 대하여 테스트하였으며, 재시도없이 첫번째 시도의 답변결과를 반영하였습니다.
Python, JavaScript, C++ 코딩 테스트에 대한 종합 결과는 다음과 같이 약 67%의 성공률을 보여주었습니다.
LLama-3.1-70b/Pass@1 | Very Easy | Easy | Medium | Hard | Very Hard | Expert |
Python/ | Pass | Pass | Pass | Fail | Pass | Pass |
Java Script | Pass | Pass | Pass | Pass | Fail | Fail |
C++ | Pass | Pass | Fail | Fail | Pass | Fail |
Llama 3.1 405B 모델의 코딩 테스트 결과도 Llama 3.1 70B 모델과 크게 다르지 않았습니다.(Fail 총 개수 1~2개 감소)
추론테스트
다음은 추론성능 테스트로, 첫 번째 문제는 셔츠 건조시간 문제입니다.
"5장의 셔츠를 햇빛에 건조하는데 4시간이 걸린다고 해보자. 그렇다면 20장의 셔츠를 건조하는 데는 얼마나 걸릴까요? 각 단계를 차근차근 설명해 주세요." - 정답 : 4시간, Llama 3.1 70B 오답
영어로도 질문해 봤지만 Llama 3.1 70B와 405B 모두 셔츠를 말리는 데 걸리는 시간이 셔츠의 개수와 관련이 없다는 것을 알지 못했으며, GPT-4o mini 모델의 답변과는 차이가 있었습니다.
다음 추론문제는 GSM8K (Grade School Math 8K, 8,500개의 다양한 초등학교 수학 서술형 문제 데이터셋)입니다.
"베티는 새 지갑을 위해 돈을 모으고 있습니다. 새 지갑의 가격은 $100입니다. 베티는 필요한 돈의 절반만 가지고 있습니다. 그녀의 부모는 그 목적을 위해 $15를 주기로 결정했고, 할아버지와 할머니는 그녀의 부모들의 두 배를 줍니다. 베티가 지갑을 사기 위해 더 얼마나 많은 돈이 필요한가요?" - Llama 3.1 70B 정답 : 5달러
다음 추론 테스트는 살인자 문제입니다.
"방 안에는 살인자가 세 명 있습니다. 어떤 사람이 방에 들어와 그중 한 명을 죽입니다. 아무도 방을 나가지 않습니다. 방에 아 있는 살인자는 몇 명입니까? 단계별로 추론 과정을 설명하세요." - Llama 3.1 70B 정답 : 3명
이 문제에서도 GPT-4o mini의 답변과 비교해 보면 Llama 3.1의 답변은 명확성이 약간 미흡한 것 같습니다.
다음 추론 테스트는 영문 추론입니다. 문제는 다음과 같습니다.
A marble is put in a glass. The glass is then turned upside down and put on a table. Then the glass is picked up and put in a microwave. Where's the marble? Explain your reasoning step by step.(구슬을 유리컵에 넣습니다. 그다음 유리컵을 거꾸로 뒤집어서 테이블 위에 놓습니다. 그다음에 유리컵을 들어서 전자레인지에 넣습니다. 구슬은 어디에 있습니까? 단계별로 설명해 주세요.)
구슬문제에 대한 Llama 3.1 70B의 답변은 다음과 같습니다.
"단계별 추론은 다음과 같습니다. 구슬이 유리잔에 담겨 있습니다. 이 시점에서 구슬은 유리잔 안에 있습니다. 그런 다음 유리잔을 거꾸로 뒤집어 테이블 위에 놓습니다. 유리잔이 거꾸로 뒤집혀 있기 때문에 중력으로 인해 구슬이 유리잔에서 떨어집니다. 구슬은 이제 유리잔 밖의 테이블 위에 있습니다. 유리잔을 집어 전자레인지에 넣습니다. 구슬은 이미 테이블 위에 있으므로 이 동작의 영향을 받지 않습니다. 유리잔은 이제 전자레인지에 있지만 구슬은 그렇지 않습니다. 따라서 구슬은 여전히 테이블 위에 있습니다."
추론 성능 테스트에서 Llama 3.1 70B는 4문제 중 3문제를 맞히면서 우수한 성능을 보여주었습니다.
추론 테스트/Pass@1 | 셔츠 건조시간 | GSM8K 문제 | 살인자 문제 | 구슬 문제 |
Llama 3.1 70B/405B | Fail | Pass | Pass | Pass |
Llama 3.1 70B/405B 모델은 코딩이나 추론 테스트에서 전반적으로 양호한 성능을 보였지만, GPT-3o mini, Mistral Nemo 12B와 비교해 볼 때 복잡한 코딩이나, 한국어 처리에서 성능 차이가 있는 것을 확인하였습니다.
맺음말
Meta의 최신 AI 모델, Llama 3.1은 128K의 문맥 길이와 8개의 언어를 지원하며, 합성 데이터 생성, 모델 증류, 향상된 안전 도구(Llama Guard 3, Prompt Guard), 그리고 Llama Stack API를 통한 개발자 친화적인 인터페이스 제공과 실시간 및 배치 추론, 기능 호출, 지속적 사전 훈련을 지원하여 AI 애플리케이션 개발에 매우 유용한 도구입니다.
Groq과 FireworksAI를 통해 사용해 본 Llama 3.1 70B 모델의 후기는 다음과 같습니다.
- groq/llama-3.1-70b-versatile 모델의 속도는 정말 빠르다.
- GPT-4o와 Claude 3.5 Sonnet의 코딩 성능을 능가하진 못했지만, Llama 3에 비해 상당한 발전이 있다.
- 당연히 한국어 대화와 문자출력 성능이 부족하다.
성능 테스트 결과, Llama 3.1 모델은 Python, JavaScript, C++ 등 다양한 언어의 코딩 테스트에서 약 67%의 성공률을 기록했으며, 추론 테스트에서는 4문제 중 3문제를 맞히는 우수한 성능을 보여주었습니다. Llama 3.1은 오픈소스 AI 모델의 새로운 가능성을 열어주며, 연구자와 개발자에게 강력한 도구를 제공하고 있습니다. 이를 통해 AI 기술의 발전과 응용이 더욱 가속화될 것으로 기대됩니다.
여러분도 이 블로그에 소개된 방법을 통해 Llama 3.1의 성능을 함께 경험해 보시기를 바라면서, 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다.
2024.04.19 - [AI 언어 모델] - Llama 3: 추론 테스트 및 스네이크 게임 코딩, 에러 없이 한번에 성공!
'AI 언어 모델' 카테고리의 다른 글
🧠 최강 AI 검색 비서: Mistral Large 2 모델 설정 가이드 (0) | 2024.07.26 |
---|---|
🚀Mistral Large 2 리뷰: 유창한 한국어와 뛰어난 추론 능력의 코딩 AI (2) | 2024.07.26 |
Mistral NeMo: 🚀128k 긴 텍스트와 다국어 지원 미스트랄 최신 모델 (5) | 2024.07.20 |
🚀 GPT-4o mini: OpenAI의 최첨단 고성능 저비용 AI 모델 (0) | 2024.07.20 |
미스트랄 Codestral Mamba:🐍Mamba 아키텍처로 무장한 코드 생성 AI (2) | 2024.07.18 |