안녕하세요! 오늘은 마이크로소프트의 최신 언어 모델 Phi-3에 대해서 알아보겠습니다. 이번에 먼저 공개된 Phi-3 mini 모델은 3.8B(38억) 개의 매개변수를 가진 소형 언어 모델(SLMs)이며, 동등한 수준의 언어 모델에 비해 성능이 뛰어나고 비용 효율적인 모델로, 다양한 벤치마크에서 우수한 결과를 나타내고, 아이폰 14에서도 별도의 변환과정 없이 구동된다고 합니다. 이 블로그에서는 Phi-3의 기술리포트를 통해 모델의 기술적 사양, 벤치마크 결과에 대해 살펴보고, 추론 및 코딩 테스트를 진행해 보겠습니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Phi-3 기술적 사양
Phi-3-mini는 38억 개의 매개변수를 가진 언어 모델로, 3.3조 개의 토큰으로 훈련되었습니다. 이 모델은 4k, 128k 두 가지 컨텍스트 길이 옵션을 제공하며, 웹 데이터를 언어모델 기반으로 필터링하고 언어모델이 생성한 합성 데이터를 사용하여 훈련되었습니다. 모델은 채팅 형식에 적합하게 세밀하게 튜닝되었으며. 또한 4비트로 양자화되어 있어 메모리를 약 1.8GB 정도밖에 차지하지 않으므로, iPhone 14의 A16 Bionic 칩에서 별도 모델 변환과정 없이 실행할 수 있습니다.
모델명 | 매개변수 | 컨텍스트 길이 | 훈련 토큰 개수 | 지식 데이터 시점 |
Phi-3 mini | 3.8B | 4k, 128k |
3.3T
|
2023. 10월 |
Phi-3 small | 7B | 모델 미공개 |
4.8T
|
모델 미공개 |
Phi-3 medium | 14B | 모델 미공개 | 모델 미공개 |
- 트랜스포머 디코더 아키텍처: 언어 모델링과 번역과 같은 자연어 처리 작업에서 매우 효과적으로 사용되는 구조로서, self-attention 메커니즘을 사용하여 입력 시퀀스의 모든 위치 간의 관계를 고려하여, 텍스트 데이터를 처리하고 생성
- 기본 컨텍스트 길이: 4K, LongRope 기술을 통해 128K까지 확장 (Phi-3-mini-128K 모델)
- 토크나이저, 블록 구조: Llama-2와 동일한 토크나이저, 유사한 블록 구조로 Llama-2용 개발 도구와 패키지 적용 가능
- 히든 디멘션, 헤드 및 레이어: 모델별 사양은 다음과 같으며, 자세한 설명은 더 보기를 클릭하세요. 참고로 ChatGPT-3.5의 히든 디멘션은 4096, 헤드와 레이어는 32입니다.
모델 | 히든 디멘션 | 헤드 | 레이어 |
Phi-3 mini | 3072 | 32 | 32 |
Phi-3 small | 4096 (=ChatGPT-3.5) | 32 (=ChatGPT-3.5) | 32 (=ChatGPT-3.5) |
Phi-3 medium | 5120 | 40 | 40 |
- 히든 디멘션(Hidden Dimension): 히든 디멘션은 모델의 각 레이어에서 사용되는 중간 표현의 차원 수를 나타냅니다. 이 값은 모델이 입력 데이터를 처리하고 정보를 캡처하는 능력에 영향을 줍니다. 더 높은 히든 디멘션은 더 복잡한 데이터를 처리할 수 있지만, 모델의 크기와 연산량을 증가시키는 데 필요합니다.
- 헤드(Heads): 헤드는 어텐션 메커니즘에서 병렬로 계산되는 어텐션의 수를 나타냅니다. 어텐션은 모델이 입력의 다른 부분에 주의를 기울이는 데 사용되는 메커니즘으로, 여러 개의 헤드를 사용함으로써 모델은 여러 관점에서 데이터를 분석할 수 있습니다.
- 레이어(Layers): 레이어는 모델의 깊이를 나타내며, 각 레이어는 입력 데이터를 받아 중간 표현을 계산하는 계층입니다. 더 많은 레이어는 모델의 표현력을 향상시킬 수 있지만, 더 많은 계산 리소스와 훈련 데이터를 필요로 합니다.
- 훈련 데이터: 총 3.3T 토큰, bfloat16(비 정규화 16비트 부동소수점)를 사용하여 훈련.
- 미세 조정: 채팅에 맞게 미세 조정, " <|user|>/n Question <|end|>/n <|assistant|> "과 같은 채팅 템플릿을 사용.
- 모바일 기기 로컬 실행 가능: 4비트로 양자화되어 약 1.8GB의 메모리 차지, iPhone 14에 배포하여 A16 Bionic 칩을 사용하여 기기 내에서 완전히 오프라인으로 실행하여 초당 12개 이상의 토큰을 달성
훈련 데이터 및 기술
Phi-3는 작은 크기임에도 불구하고 ChatGPT와 같은 대형 언어 모델에 필적하는 성능을 보이는 성과의 핵심은 훈련 데이터인데요, 훈련 1단계에서는 일반 지식 및 언어 이해를 위한 웹 데이터 중심 학습, 2단계는 1단계에서 사용한 웹 데이터의 일부와 합성 데이터를 결합하여 논리적 추론 및 전문 기술 학습을 진행하며, 다음과 같은 훈련 기술을 사용합니다.
1. 데이터 최적화
- 웹 데이터 필터링: 일반적인 대량의 웹 데이터를 사용하는 대신, Phi-3는 "교육 수준"에 따라 웹 데이터를 필터링합니다. 이를 통해 모델의 크기를 줄이면서도 추론 능력을 향상시킬 수 있는 고품질 데이터를 사용합니다.
- 합성 데이터 생성: LLM을 이용하여 논리적 추론 및 다양한 전문 기술을 학습할 수 있는 합성 데이터를 생성합니다.
- 데이터 최적화 : 모델 크기에 맞는 최적의 데이터를 사용하여 학습 효율을 극대화합니다.
2. 사후 훈련
- 지도 학습 미세 조정 (Supervised Fine-Tuning, SFT): 수학, 코딩, 추론, 대화, 모델 정체성 및 안전성 등 다양한 분야의 고품질 데이터를 사용하여 모델을 미세 조정합니다. 이 기술은 사전 훈련된 모델을 새로운 작업 또는 데이터셋에 맞게 세부 조정하는 과정을 말합니다.
- 직접 선호도 최적화 (Direct Preference Optimization, DPO): 원치 않는 동작을 피하도록 직접적으로 사용자의 선호도를 모델링하고 최적화하는 방법입니다. 일반적으로 이 방법은 추천 시스템 및 개인화된 서비스와 같은 사용자 중심의 응용 프로그램에 적용됩니다. 사용자 선호도 모델링, 목표 함수 정의, 최적화 알고리즘 적용, 학습 및 평가 순으로 진행됩니다.
- 장문 컨텍스트 확장: 4K에서 128K로 컨텍스트 길이를 확장하여 장문 텍스트 처리 능력을 향상시킵니다.
3. 안전성 강화
- 사후 훈련에서의 안전성 정렬: 유해한 내용 생성, 편향성 등의 문제를 최소화하기 위한 훈련을 진행합니다.
- 레드 팀 운영: 독립적인 레드 팀이 모델을 검증하고 개선점을 제시합니다.
- 자동화된 테스트 및 평가: 다양한 유해성 범주에 대한 자동화된 테스트를 통해 모델의 안전성을 검증합니다.
벤치마크 결과
벤치마크 결과 Phi-3-mini 모델은 MMLU(5-Shot)에서 68.8의 성능을 보이며, MT Bench(2 round ave.)에서 8.38의 성능을 보입니다. 이러한 결과는 Mixtral, GPT-3.5 등과 유사한 성능을 보이며, 휴대전화에 로컬로 배포될 수 있는 크기의 모델임에도 불구하고 상당한 성능을 보여줍니다.
- 전반적인 성능: Phi-3 모델은 대부분의 벤치마크에서 상위권 성능을 보여주었으며, 특히 14B 크기의 Phi-3 모델은 MMLU, GSM8K, Arc-C, 등 여러 벤치마크에서 최고 수준의 성능을 기록했습니다. 크기가 클수록 성능이 향상되는 경향을 보이면서, Phi-3 3.8B 보다 7B 모델이, 7B 보다 14B 모델이 대체로 더 높은 점수를 얻었습니다.
- 다른 모델과 비교: Phi-3 14B는 Chinchilla 70B와 PaLM 540B에 비해 적은 파라미터 수에도 불구하고 일부 벤치마크에서 더 높은 성능을 보였으며, GPT-3.5 보다 MMLU, GSM8K 등 여러 벤치마크에서 더 높은 점수를 얻었습니다.
- 벤치마크별 분석: Phi-3 14B는 MMLU (Massive Multitask Language Understanding)에서 가장 높은 점수를 기록하여 다양한 작업에 대한 이해 능력이 뛰어남을 보여줍니다. Phi-3 모델은 모든 크기에서 GSM8K (Grade School Math) 상위권 성능을 보이며, 특히 14B 모델은 가장 높은 점수를 기록하여 수학적 문제 해결 능력이 우수함을 나타냅니다. BigBench Hard 지표에서 Phi-3 모델은 다른 모델들과 비슷한 수준의 성능을 보였으며, TruthfulQA에서는 다른 모델들에 비해 상대적으로 낮은 점수를 기록하여 사실적인 질문에 대한 답변 능력에 개선의 여지가 있음을 시사합니다.
위 결과와 같이 Phi-3 모델은 다양한 벤치마크에서 우수한 성능을 보이며, 특히 14B 모델은 적은 파라미터 수에도 불구하고 대형 모델들과 경쟁할 수 있는 능력을 보여줍니다. 이는 Phi-3 모델이 다양한 자연어 처리 작업에 효과적으로 활용될 수 있음을 시사합니다. 하지만 TruthfulQA 등 일부 벤치마크에서는 개선의 여지가 있습니다.
추론 및 코딩 테스트
다음은 추론 및 코딩 테스트인데요. 테스트는 허깅 챗 사이트에서 Phi-3-mini-4k-instruct 모델을 통해 웹 검색 옵션을 선택하지 않고 테스트를 진행하였습니다.
https://huggingface.co/chat/models/microsoft/Phi-3-mini-4k-instruct
추론 테스트
1번 추론문제 : 5장의 셔츠를 햇빛에 펴놓고 건조하는 데 4시간이 걸린다면, 20장의 셔츠를 건조하는 데는 얼마나 걸릴까요? 추론을 단계별로 설명해 주세요. - 정답
이 상황에서는 셔츠의 수가 건조 시간에 영향을 미치지 않습니다. 여기에 그 이유가 있습니다: 1. 셔츠의 건조 시간은 태양의 강도, 습도 및 공기 순환과 같은 요소에 따라 달라지며, 셔츠의 수에는 영향을 미치지 않습니다. 2. 5장의 셔츠를 평평하게 펴면 4시간이 걸립니다. 이는 각 셔츠가 4시간이 걸린다는 것을 의미합니다. 3. 20장의 셔츠를 펴면, 그들은 여전히 5장의 셔츠와 같은 조건에 노출됩니다. 4. 따라서 20장의 각 셔츠도 4시간이 걸릴 것입니다. 따라서 같은 조건을 가정할 때, 20장의 셔츠도 4시간이 걸릴 것입니다.그러나 실제로는 더 많은 셔츠를 가지고있는 것이 공기 순환량이 줄어들어 건조 시간에 영향을 줄 수 있지만, 제공된 정보를 기반으로하면 조건이 일정하다고 가정합니다. 최종 답변: 제공된 조건을 기반으로하면, 같은 조건이라면 20장의 셔츠도 4시간이 걸릴 것입니다. 그러나 이는 이상적인 시나리오이며, 실제로는 공기 순환량이 줄어듦과 같은 요인으로 인해 건조 시간에 영향을 미칠 수 있습니다. 그러나 제공된 정보를 기반으로하면 조건이 일정하다고 가정합니다. 따라서 20장의 셔츠는 4시간이 걸릴 것입니다. |
2번 추론문제 : 방 안에는 세 명의 살인자가 있습니다. 누군가가 방에 들어와 그들 중 한 명을 죽입니다. 아무도 방을 나가지 않습니다. 그럼 방 안에 남아 있는 살인자는 몇 명입니까? 추론을 단계별로 설명해 주세요. - 정답
상황을 단계별로 분석해 보겠습니다. 1. 처음에 방 안에는 세 명의 살인자가 있습니다. 2. 누군가가 방에 들어와 한 명의 살인자를 죽입니다. 3. 살인 후에 방 안에는 이제 두 명의 살인자만 남아 있습니다 (죽지 않은 두 명). 4. 그러나 방에 들어와 한 명의 살인자를 죽인 사람도 살인자입니다. 5. 따라서 방 안에는 여전히 세 명의 살인자가 있습니다 (남은 두 명의 살인자와 살인을 저질렀던 사람). 결론적으로, 방 안에는 세 명의 살인자가 남아 있습니다. 방에 들어와 한 명의 살인자를 죽인 사람도 살인자로 간주됩니다. 따라서 전체 살인자 수는 변하지 않습니다. 이는 논리적인 퍼즐이며, 처음에는 직관에 반하는 답일 수 있지만, 살인자의 정의에 기반합니다. 살인을 저질렀던 사람 역시 살인자로 간주됩니다. 따라서 살인자 수는 변하지 않습니다. 답은 세 명의 살인자입니다. |
3번 추론문제 : 제인은 조보다 빠릅니다. 조는 샘보다 빠릅니다. 샘은 제인보다 빠를까요? 단계별로 설명해 보세요. - 정답
단계 1: 제공된 정보를 확인합니다. - 제인은 조보다 빠릅니다. - 조는 샘보다 빠릅니다. 단계 2: 관계를 분석합니다. - 제인이 조보다 빠르고, 조가 샘보다 빠르기 때문에 우리는 제인이 또한 샘보다 빠르다고 추론할 수 있습니다. 단계 3: 결론 - 주어진 정보와 그들의 속도 관계를 고려하면 샘은 제인보다 빠르지 않습니다. 사실, 제인은 조와 샘 둘 다보다 더 빠릅니다. |
위에서 본 바와 같이 Phi-3-mini-4k-instruct 모델은 3가지 추론 문제 모두 정답을 맞혔는데요. 아래 링크에서 Llama3 모델의 답변결과와 비교해 보실 수 있습니다.
2024.04.19 - [대규모 언어모델] - Llama 3: 추론 테스트 및 스네이크 게임 코딩, 에러 없이 한번에 성공!
코딩 테스트
코딩 테스트는 edabit.com이라는 코딩 교육 사이트의 파이썬 코딩 시험문제 Easy, Medium, Hard, Very Hard, Expert 단계별 문제를 가지고 테스트하였으며, 결과는 아래와 같습니다.
Easy 문제 : 라디안으로 된 각도를 가져와서 해당 각도를 소수점 한 자리까지 반올림하여 도 단위로 반환하는 함수를 작성하세요. - 정답
Medium 문제 : 전자 공학에서, 디지털-아날로그 변환기(DAC, D/A 또는 D-to-A)는 신호의 이진 표현을 아날로그 출력으로 변환하는 시스템입니다. 8비트 변환기는 최대 2^8개의 서로 다른 값으로 표현할 수 있으며, 각 연속 값은 전체 범위 값의 1/256만큼 차이가 납니다. 이것이 시스템 해상도가 됩니다. 소수점 표현으로 된 신호를 가져와서 이진 표현으로 변환되었을 때 DAC가 생성할 아날로그 전압 수준을 반환하는 함수를 만드세요. 값 범위는 0에서 1023까지이며, 참조 범위는 0에서 5.00 볼트입니다. 값과 참조는 직접 비례합니다. 이 DAC는 10비트의 해상도를 가지고 있으며 DAC 참조가 5.00 볼트로 설정되어 있습니다. - 정답
Hard 문제 : IP 주소를 가져와서 PTR DNS 레코드를 사용하여 도메인 이름을 반환하는 함수를 작성하세요. - 정답
Very Hard 문제 : 항등 행렬은 왼쪽 위에서 오른쪽 아래로 1이 이어지는 정사각형 행렬로 정의됩니다. 나머지 요소는 0입니다. 항등 행렬은 기계 학습에서부터 상대성 이론에 이르기까지 다양한 응용 분야가 있습니다. 정수 n을 인수로 취하고 n x n 차원의 항등 행렬을 반환하는 함수를 만드세요. 이 도전 과제에서는 정수가 음수 인 경우 n x n 차원의 항등 행렬의 대칭 이미지를 반환합니다. 대칭 이미지가 좌우로 됐든 상하로 됐든 상관없습니다. - 오답
Expert 문제 : 숫자로 이루어진 문자열이 주어졌을 때, 번갈아가며 홀수/짝수 또는 짝수/홀수 숫자로 이루어진 가장 긴 부분 문자열을 반환합니다. 두 개 이상의 부분 문자열이 동일한 길이를 가진 경우, 먼저 나타나는 부분 문자열을 반환합니다. - 정답
코딩 테스트의 총 집계 결과는 다음과 같습니다.
Easy | Medium | Hard | Very Hard | Expert |
정답 | 정답 | 정답 | 오답 | 정답 |
마지막으로는 파이썬으로 스네이크 게임을 작성하는 문제로 테스트해 보았습니다. 놀랍게도 한번에 성공입니다. 인터넷 검색 옵션을 켜고 실행하였지만 다른 대형 언어 모델과 비교하면 코딩성능이 우수한 것 같습니다.
아래 화면과 같이 게임 종료, 게임 재시작 등의 기능도 정상적으로 동작하였습니다.
맺음말
오늘은 마이크로소프트에서 개발한 작지만 강력한 소형 언어 모델 Phi-3에 대해 살펴보았습니다. 특히 14B 크기의 Phi-3 모델은 MMLU, GSM8K, Arc-C 등 여러 벤치마크에서 최고 수준의 성능을 기록했으며, Chinchilla 70B와 PaLM 540B에 비해 적은 파라미터 수에도 불구하고 MMLU, GSM8K 등 여러 벤치마크에서 GPT-3.5 보다 더 높은 점수를 얻었습니다.
Phi-3가 작은 크기임에도 불구하고 다양한 벤치마크와 추론 및 코딩 테스트에서 좋은 성능을 보여주었지만, Phi-3 모델은 특정 작업에 대해서는 여전히 크기적인 제약으로, TriviaQA와 같은 과제에서는 성능이 저하될 수 있으며, 주로 영어 언어에 한정되어 있어 다국어 기능이 제한되는 단점도 가지고 있습니다.
오늘 블로그 내용은 여기까지입니다. 저는 다음에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다.
2024.04.20 - [AI 도구] - [AI 논문] VASA-1: 마이크로소프트의 초실감 얼굴 생성 기술
'AI 언어 모델' 카테고리의 다른 글
DeepSeek-V2: 오픈소스 최고 성능과 가성비를 자랑하는 혁신 MoE 언어 모델 (0) | 2024.05.11 |
---|---|
OpenELM: 애플 최초 오픈소스 소형 언어 모델, 핵심기술과 성능비교 (2) | 2024.04.28 |
[Llama 3 70B] Groq을 활용한 함수 호출 및 API 통합! NBA 게임 및 주식 정보 실시간 조회 (4) | 2024.04.21 |
Llama 3: 추론 테스트 및 스네이크 게임 코딩, 에러 없이 한번에 성공! (2) | 2024.04.19 |
야놀자 한국어 언어 모델 EEVE와 Ollama로 구현하는 로컬 RAG (0) | 2024.04.17 |