[00:00]
자, 지난 12월 마이크로소프트가
[00:02]
새로운 Phi 모델을 발표했는데요.
[00:05]
당시에는 140억 파라미터 모델만
[00:08]
언급했었습니다.
[00:11]
처음부터 매우 흥미로워 보였지만
[00:13]
이 모델의 가중치는 공개되지 않았죠.
[00:16]
사람들이 우회적인 방법으로
[00:18]
모델을 구할 수 있었는데,
[00:20]
Azure에서 다운로드해서
[00:22]
Hugging Face에 업로드하는 방식이었습니다.
[00:25]
하지만 1월이 되어서야
[00:27]
공식적으로 가중치가 공개되었습니다.
[00:30]
당시 제가 정말 궁금했던 것은
[00:33]
'Phi-4 Mini는 어디 있지?' 였어요.
[00:35]
140억 파라미터 모델이 인상적이긴 하지만
[00:39]
많은 흥미로운 점이 있었고
[00:41]
제가 항상 생각했던
[00:43]
가장 뛰어난 Phi 모델은
[00:45]
38억 파라미터의 Mini 모델이었죠.
[00:47]
이전 Phi-2와 Phi-3, Phi-3.5에서도 있었던
[00:50]
그 Mini 버전 말입니다.
[00:53]
그리고 지난주, 마이크로소프트가 드디어
[00:58]
38억 파라미터 Instruct 모델과
[01:01]
여러 다양한 버전의 모델들을
[01:04]
공개했습니다.
[01:07]
이 Phi 제품군을 보면
[01:10]
현재 구축되어 있는
[01:12]
수많은 Phi 모델들을 확인할 수 있죠.
[01:14]
이 영상에서는
[01:16]
이 모델들의 특징과
[01:18]
Phi-4의 새로운 점들,
[01:21]
특히 Phi-4M 멀티모달 모델과
[01:24]
고급 추론 기능이
[01:27]
어떻게 추가되었는지 살펴보겠습니다.
[01:30]
자, 이 릴리즈를 살펴볼까요?
[01:32]
Hugging Face에서 보면
[01:34]
여러 다양한 모델들이 있는데
[01:37]
새로운 Phi-4 Mini Instruct가 있습니다.
[01:40]
아쉽게도 베이스 모델은
[01:42]
공개하지 않은 것 같네요.
[01:45]
완전한 파인튜닝을 하고 싶다면,
[01:48]
이전에는 가능했던 것이
[01:50]
이제는 아쉽게도
[01:52]
Phi-4 모델에서는
[01:53]
불가능해진 것 같습니다.
[01:55]
대신 Phi-4 Mini Instruct와
[01:59]
Phi-4 Multimodal Instruct,
[02:00]
ONNX 버전들도 제공되고
[02:03]
GGUF 버전까지 제공됩니다.
[02:06]
Phi-4 Mini와 관련해서
[02:09]
사람들이 오랫동안
[02:11]
원했던 기능 중 하나가
[02:14]
함수 호출 기능이었는데,
[02:16]
이제 38억 파라미터 모델에 추가되었습니다.
[02:20]
이것은 기본적으로
[02:22]
로컬에서 함수 호출이 가능하고
[02:25]
복잡한 추론이 필요하지 않은
[02:28]
작은 규모의 에이전트를 만들 수 있으며
[02:31]
의사결정 포인트가 있고
[02:33]
함수 호출과 도구 선택에
[02:35]
도움을 받을 수 있다는 의미입니다.
[02:37]
또 다른 좋은 점은
[02:40]
마이크로소프트가 분명히 알았다는 거죠.
[02:42]
사람들이 이 모델들을 디바이스에서
[02:45]
실행한다는 것을요.
[02:47]
클라우드보다는
[02:48]
LM Studio나 Llama 같은 것들로
[02:52]
양자화된 버전을 실행하고 있죠.
[02:55]
GGUF 포맷뿐만 아니라 ONNX도 지원하고
[02:59]
정말 좋은 것 같아요.
[03:00]
ONNX 런타임을 출시해서
[03:02]
이 모델을 다양한 환경에서
[03:05]
서비스할 수 있게 되었는데,
[03:07]
라즈베리 파이나
[03:09]
모바일 폰 등에서도 실행할 수 있습니다.
[03:13]
Fi-4 인스트럭트 모델은 3.8B 파라미터로
[03:16]
이전과 비슷한 규모이며
[03:19]
새로운 토크나이저를 탑재했습니다
[03:22]
기본적으로 5조 개의 토큰으로
[03:24]
학습되었는데, 이는 그리 많은 양이 아닙니다
[03:27]
사전 학습 데이터 측면에서
[03:28]
다른 모델들과 비교하면
[03:31]
현재 나와있는 모델들은
[03:32]
12~15조 토큰이나 그 이상으로 학습되고 있죠
[03:36]
다른 모델들에 비해서는
[03:37]
하지만 흥미로운 점은
[03:39]
Phi 모델들이 합성 데이터를 주로 사용한다는 것입니다
[03:43]
이러한 합성 데이터를 활용하여
[03:47]
모델이 수학과 코딩을
[03:49]
잘 수행할 수 있도록 만들었고
[03:52]
각 버전이 나올 때마다
[03:54]
합성 데이터셋을 통해
[03:55]
지속적으로 개선되고 있으며
[03:57]
효과적인 방법을 실험하고 있습니다
[04:00]
현재 제가 보기에
[04:02]
매우 흥미로운 두 가지 특징이 있는데
[04:04]
Phi-3.5를 돌이켜보면, 비전 버전이 있었죠
[04:08]
이는 기본적으로 텍스트 모델에
[04:10]
비전 인코더를 붙여서
[04:12]
학습시킨 것이었습니다
[04:15]
Phi-4에서도 비슷한 접근을 했지만
[04:18]
흥미로운 점은 이제는
[04:20]
단순한 비전 모델이 아니라
[04:23]
완전한 멀티모달 모델이라는 점입니다
[04:25]
논문을 자세히 살펴보면
[04:27]
비전 인코더뿐만 아니라
[04:29]
오디오 인코더도 포함되어 있어서
[04:32]
이제 모델이 비전 인코더를 통해
[04:35]
이미지를 처리할 수 있고
[04:37]
이미지 토큰으로 변환할 수 있으며
[04:41]
비전 인코더를 통해 처리하고
[04:43]
오디오 인코더에서 나오는
[04:45]
오디오 토큰도 처리할 수 있습니다
[04:49]
Phi-4 멀티모달 모델은
[04:52]
3.8B 파라미터 백본 모델을 사용하고 있으며
[04:56]
흥미로운 점은
[04:58]
LoRA의 혼합 방식을 사용한다는 것입니다
[05:02]
비전 인코더는
[05:03]
CLIP 인코더를 사용하고 있는데
[05:06]
아마도 CLIP 1을 사용하는 것 같고
[05:09]
최근 구글에서 나온 CLIP 2는 아닙니다
[05:11]
앞으로 나올 버전에서는
[05:13]
더 좋아질 것 같은데
[05:15]
어쨌든 이 모델은
[05:17]
1344x1344 크기의 이미지를 처리할 수 있고
[05:22]
이미지와 텍스트 데이터 토큰을
[05:24]
서로 교차하여 생성하도록 학습되었습니다
[05:27]
음성과 오디오 요소에 대해서도
[05:30]
동일한 방식을 적용했는데
[05:33]
오디오 인코더는
[05:35]
비전 인코더보다 더 크며
[05:36]
오디오 LoRA 어댑터도 있어서
[05:39]
오디오 인코더에서 나오는 토큰을
[05:42]
모델이 사용할 수 있게 하고
[05:44]
이를 Phi-4 미니로
[05:47]
입력할 수 있게 합니다
[05:50]
이 오디오 인코더는
[05:52]
사전 학습을 위해 2백만 시간의
[05:54]
음성 페어로 학습되었고
[05:56]
LoRA를 통한 연결을 위해
[05:58]
추가로 1억 개의
[06:00]
큐레이션된 음성과 오디오 데이터로
[06:04]
지도 학습 미세조정을 진행했습니다
[06:07]
이제 코드를 살펴보고
[06:08]
실제로 어떻게 작동하는지
[06:11]
Phi-4 미니로 실험해보겠습니다
[06:15]
3.8B가 아니라 약 5.6B
[06:18]
파라미터까지 늘어났는데
[06:20]
이 멀티모달 모델로 무엇을 할 수 있는지 살펴보겠습니다
[06:22]
이 멀티모달 모델을 사용해서
[06:24]
이미지와 오디오에 어떻게 반응하는지 한번 살펴보겠습니다
[06:28]
자, 코드를 살펴보겠습니다
[06:30]
이 모델이 실제로 어떻게 동작하는지
[06:33]
확인해 보겠습니다. 정말 멋진 점은
[06:35]
Transformers 라이브러리가
[06:37]
LLM과 VM뿐만 아니라
[06:40]
이러한 멀티모달 모델까지도
[06:43]
처리할 수 있도록 업데이트되었다는 겁니다
[06:46]
이 Auto processor는
[06:49]
오디오와 이미지를 모두 처리할 수 있는데
[06:52]
이후에 자세히 살펴보겠습니다
[06:54]
저는 A100이 있는 Colab을 사용하고 있지만
[06:57]
실제로 그렇게 많은 RAM이 필요하지는 않습니다
[06:59]
모델 자체가 꽤 작아서
[07:01]
T4에서도 작동할 수 있을 것 같습니다
[07:04]
다만 한 가지 문제는 Flash Attention 등의
[07:07]
버전이 일부 GPU에서는 작동하지 않을 수 있다는 점입니다
[07:11]
하지만 그것을 제외하면
[07:13]
모델이 꽤 작아서 좋습니다
[07:15]
그럼 살펴보도록 하겠습니다
[07:17]
기본적으로 모델을 로드하고
[07:20]
trust_remote_code를 true로
[07:21]
설정해야 합니다
[07:24]
오디오와 이미지 처리를 위한
[07:25]
추가 코드들이 많이 있기 때문입니다
[07:29]
프로세서에서 이를 처리하기 위해서죠
[07:32]
이것들이 로드되고 나면
[07:34]
앞서 말씀드린 것처럼
[07:36]
메모리를 많이 사용하지 않습니다
[07:39]
그리고 나서 이미지를 로드하고
[07:41]
실행할 수 있습니다. 기본적인 방식은
[07:44]
Claude-3에서 했던 것과 비슷한데
[07:46]
이미지 태그를 사용하고
[07:49]
여러 이미지가 있을 경우에는
[07:52]
숫자를 변경합니다
[07:54]
지금은 image_1만 전달하고 있지만
[07:56]
image_1, image_2처럼
[07:58]
세 개의 이미지를 전달한다면
[08:00]
각각에 번호를 부여해서
[08:02]
사용할 수 있습니다
[08:04]
그리고 나서 질문을 할 수 있죠
[08:06]
여기서는 단순히
[08:07]
이미지에 무엇이 있는지 물어보겠습니다
[08:10]
이 주석을 해제하면
[08:12]
Claude-3 Vision 모델에서 가져온
[08:15]
예시를 실행할 수 있습니다
[08:18]
프롬프트는
[08:20]
토크나이저를 거치고
[08:23]
프로세서는 텍스트, 이미지, 오디오를 처리해서
[08:27]
텐서를 반환합니다
[08:30]
이번 경우에는 오디오가 없는데
[08:32]
이는 계속 진행하면서 보게 될 것이고
[08:34]
명확히 볼 수 있도록
[08:36]
인자들에 레이블을 붙였습니다
[08:38]
프로세서가 이것들을 가져와서
[08:40]
이미지 토큰화와
[08:42]
오디오 토큰화를 수행하고
[08:45]
마지막으로
[08:46]
평소처럼 모델을 통해 실행하여
[08:48]
응답을 얻을 수 있습니다
[08:51]
이미지로 시작해보겠습니다
[08:53]
간단한 함수를 만들었는데
[08:56]
채팅 템플릿을 적용하고
[08:58]
텍스트는 프롬프트로
[09:01]
이미지는 이미지 리스트의 첫 번째로 넣습니다
[09:05]
이미지를 하나만 사용하기 때문에
[09:07]
image_1으로 하드코딩했습니다
[09:09]
다른 방식으로 하고 싶다면
[09:13]
다르게 처리해서
[09:15]
여러 이미지를 넣을 수 있습니다
[09:17]
자, 이것은 제가 여러
[09:19]
Vision 모델에서 사용했던 이미지인데
[09:23]
이미지에 꽃과 벌이 있는데요,
[09:25]
항상 궁금했던 건
[09:26]
벌을 감지할 수 있을지였죠. 이번에도 확실히
[09:29]
흐린 배경 속 분홍색 꽃 위에 있는
[09:31]
벌의 클로즈업 샷을 보여주고 있네요.
[09:33]
두 가지 출력이 나오는 이유는
[09:35]
하나는 출력용이고 하나는 반환용이에요.
[09:37]
원래는 이것들을
[09:38]
마크다운 등에 넣으려고 했죠. 이 모델의 멋진 점은
[09:40]
다른 모델들과 비교했을 때
[09:42]
phi-4-mini-instruct가
[09:44]
꽤 우수한 LLM이기 때문에
[09:49]
이미지에 있는 벌이
[09:50]
어떤 종류인지 물어볼 수 있고
[09:52]
관련 정보를 제공받을 수 있어요. 또한
[09:55]
다른 것들도 잘 감지할 수 있는데
[09:56]
여기서 볼 수 있듯이
[09:58]
두 번째
[10:00]
색상이 빨간색이에요. 그래서
[10:02]
분홍색 외에 어떤
[10:04]
밝은 색의 꽃이 있는지 물어보면
[10:06]
바로 빨간색이라고 대답하죠.
[10:09]
제가 여러 VMS에서 테스트한
[10:11]
또 다른 예시는 이 비행기 사진인데
[10:14]
이 경우에도 사진이 무엇인지 잘 파악합니다.
[10:17]
하지만 숫자를 세는 것은 잘 못하네요.
[10:20]
비행기가 몇 대인지 물어보면
[10:22]
10대라고 하는데
[10:25]
실제로는 15대의 비행기가
[10:28]
있거든요. 그게 안 됐죠. 흥미롭게도
[10:31]
바운딩 박스를
[10:32]
요청했을 때는
[10:34]
16개의 다른 바운딩 박스를 반환했어요.
[10:38]
일부를 감지하긴 했나 봐요.
[10:40]
하지만 위치를 보면
[10:41]
정확한 위치는 아닌 것 같네요.
[10:44]
이것들을 플롯팅했을 때
[10:46]
어떤 공항인지 물어보면
[10:48]
그건 테스트 용도였는데
[10:50]
실제로는 LAX지만 아마도
[10:52]
어떤 모델이라도 알아내기는
[10:55]
매우 어려울 거예요. 흥미로운 건
[10:57]
'답변할 수 없음'이라고 응답한다는 거죠.
[10:59]
여기서 또 다른 흥미로운 점은
[11:02]
지금까지의 테스트에서
[11:04]
OCR도 매우 잘 한다는 거예요.
[11:07]
여기 보시면 제가
[11:09]
블로그 포스트를 캡처해서
[11:12]
텍스트를 추출해달라고 했더니
[11:14]
내용을 잘 추출했어요.
[11:16]
'phi-4 멀티모달이란 무엇인가? phi-4는
[11:19]
마이크로소프트 AI 개발의 새로운 이정표'라고
[11:22]
아주 잘 처리했네요.
[11:24]
참고로 두 번 반복되는 건
[11:27]
출력과 반환을
[11:29]
동시에 하기 때문이에요.
[11:31]
원하는 포맷을 얻기 위해서죠.
[11:33]
정말 잘 작동하는 것 같고
[11:36]
이런 작업에서 매우 높은 정확도를 보여줍니다.
[11:38]
물론 이렇게 텍스트가 있으면
[11:40]
질문도 할 수 있어요.
[11:42]
예를 들어 '이 텍스트를
[11:44]
요약해줘'라고 하면
[11:47]
간단한 요약을 제공하죠.
[11:49]
프롬프트를 다르게 하면
[11:51]
특정 방향으로
[11:53]
요약을 유도할 수도 있어요.
[11:55]
텍스트에 대한 시각적 질의응답도
[11:58]
가능한데, 이게 정말 멋져요.
[12:00]
예를 들어 여기서
[12:02]
모델 크기를 물어보면
[12:05]
5.6B라고
[12:06]
정확하게 답변하죠. 다양한 텍스트를
[12:10]
시도해보시고
[12:12]
특정 내용이 있는지 물어보세요.
[12:15]
이런 식으로 활용할 수 있어요.
[12:17]
정말 멋진 작업이 될 수 있는데요
[12:19]
루프를 실행하면서
[12:21]
이미지들을 순환하면서
[12:23]
특정 레퍼런스를 찾도록 요청할 수 있습니다
[12:27]
완벽한 매칭이 없더라도
[12:29]
레드잭과 같은 것들을 찾을 수 있죠
[12:31]
다음은 오디오 부분인데
[12:34]
이 부분이 꽤 흥미롭습니다
[12:36]
우선 MP3 오디오 파일을 로드하는데
[12:39]
여기서 핵심은 오디오와
[12:42]
실제 샘플레이트를 추출하는 것입니다
[12:44]
이것을 재생해보면 들을 수 있는데
[12:47]
"나는 그 답을 모릅니다"
[12:50]
"그렇다면 저는"
[12:51]
"컴퓨터가 만든 구조물이지"
[12:55]
"메타 회사를 만든 사람이 아닐 것입니다"
[12:58]
"하지만 그것이야말로 진정한 메타일 것입니다"
[13:00]
"4년 전이 아닐 것입니다"
[13:01]
들으시다시피 저건 저커버그가
[13:03]
인터뷰에서 이야기하는 내용입니다
[13:05]
이를 처리하기 위한 함수가 필요한데
[13:08]
이 함수에는
[13:11]
프롬프트와
[13:12]
오디오, 그리고 샘플레이트가
[13:14]
입력으로 들어갑니다
[13:16]
이미지와 마찬가지로
[13:18]
오디오1로 태그를 지정하고
[13:20]
여기에 프롬프트를 전달합니다
[13:23]
보시다시피 프롬프트를 토큰화한 후
[13:26]
프로세서에 입력하는데
[13:28]
텍스트와
[13:29]
오디오를 넣을 것입니다
[13:31]
오디오는 단순히
[13:34]
오디오와 샘플레이트를 가진
[13:36]
하나의 객체가 됩니다
[13:38]
리스트에 하나만 있는 거죠
[13:43]
실행해보면 오디오 전사를 요청했을 때
[13:45]
꽤 멋진 응답을 받을 수 있습니다
[13:47]
이런 식으로 응답이 오는데
[13:49]
"저는 그 답을 모릅니다"
[13:51]
함께 들어보시죠
[13:52]
"저는 그 답을 모릅니다"
[13:54]
"만약 그렇다면"
[13:56]
"저는 컴퓨터가 만든 구조물이지"
[14:00]
"메타 회사를 만든 사람이 아닐 것입니다"
[14:03]
"하지만 그것이야말로 진정한 메타일 것입니다"
[14:05]
"4년이 걸리지는 않을 것입니다"
[14:06]
"포토리얼리스틱 아바타를 만드는 데는"
[14:08]
"우리는 그것에 더 가까워졌다고 생각합니다"
[14:11]
이것이 핵심 질문인데요
[14:12]
왜냐하면 가상현실과
[14:15]
증강현실이 다른 모든 형태와
[14:18]
비교했을 때 다른 점은
[14:20]
보시다시피 매우 정확하게
[14:23]
오디오를 전사할 수 있습니다
[14:26]
이 성능은 일부 측면에서 Whisper를 능가하는 것 같은데
[14:29]
물론 이건 Whisper보다
[14:31]
훨씬 더 큰 모델이고
[14:34]
단순 전사만 원한다면
[14:36]
사용할 모델은 아닐 겁니다
[14:38]
하지만 로컬에서
[14:39]
작동하게 되면
[14:42]
이걸 컴퓨터에 설치해두고
[14:45]
필요할 때마다
[14:47]
전사를 하고 싶어질 겁니다
[14:49]
전사가 필요할 때마다
[14:51]
이걸로 처리할 수 있고
[14:53]
이미지 처리도 할 수 있죠
[14:55]
예제에서 본 또 다른 멋진 점은
[14:58]
전사 기능이 정말 훌륭한데
[15:00]
예제 중 하나를 보면
[15:02]
오디오를 텍스트로 전사할 뿐만 아니라
[15:04]
그것을 번역까지 할 수 있습니다
[15:07]
여기서 보시다시피 오디오가
[15:09]
기본적으로 전사되어
[15:12]
분리된 토큰으로 변환된 다음 프랑스어로
[15:15]
넘어가서 기본적으로 동일한 내용을
[15:16]
프랑스어로 보여주고 있습니다. 제 생각에는
[15:19]
이런 종류의 작업으로 할 수 있는
[15:21]
아이디어가 많을 것 같습니다. 마지막으로
[15:23]
마무리하면서 보여드리고 싶은 것은
[15:24]
물론 텍스트도 처리할 수 있다는 점입니다.
[15:26]
이 경우에는 기본적으로
[15:29]
텍스트를 토큰화하고
[15:31]
text equals prompt로 전달하고
[15:33]
오디오와 이미지는 제외하면 됩니다.
[15:36]
이런 경우에는 일반적인
[15:38]
함수를 작성할 수 있는데, 이 함수는
[15:40]
입력되는 것을 확인하고
[15:42]
필요한 이미지 토큰 수와
[15:44]
오디오 토큰 수 등을 결정합니다.
[15:47]
여기서 보시다시피
[15:49]
텍스트의 경우에도 꽤 괜찮고
[15:51]
표준적인 마크다운 텍스트가 생성되어
[15:54]
다른 대규모 언어 모델처럼
[15:56]
사용할 수 있습니다. 전반적으로
[15:58]
제가 실험해본 이 모델은
[16:00]
Phi-4 멀티모달
[16:02]
5.6B 버전인데, 전체적으로 이 모델은
[16:06]
매우 인상적입니다. Phi-4 미니에
[16:08]
이러한 기능들을 추가할 수 있다는 점이
[16:11]
정말 인상적입니다. 더 큰 버전의
[16:13]
모델에 이러한 기능들을 추가하면
[16:16]
어떻게 될지 보는 것도
[16:18]
흥미로웠을 것 같습니다.
[16:22]
하지만 전반적으로 다시 한 번 말씀드리면
[16:24]
여기서 공개한 Phi 계열 모델들은
[16:26]
확실히 매우 흥미롭습니다.
[16:28]
이것은 여러분이
[16:30]
로컬 컴퓨터에
[16:31]
설치해서 다양한 작업을 수행하는 데
[16:34]
사용하고 싶을 만한 모델 중 하나이며
[16:36]
이렇게 멀티모달 작업을 수행할 수 있는
[16:39]
오픈 웨이트 모델을 가지게 된 것이
[16:42]
정말 멋집니다. 여러분들의 의견도
[16:44]
듣고 싶습니다. 어떤 용도로
[16:47]
사용할 계획이신가요? 아마도 향후 영상에서
[16:49]
이 모델의 로컬 버전을 사용하여
[16:52]
도구 호출이나 다른 기능들을
[16:53]
살펴볼 예정입니다.
[16:55]
이 모델이 분명히
[16:57]
에이전트 작업에 유용할 것 같은데
[17:00]
여러분은 어떤 용도로 사용할
[17:03]
계획인지 듣고 싶습니다.
[17:05]
항상 그렇듯이 이 영상이
[17:07]
도움이 되셨다면 좋아요와 구독 부탁드리며
[17:09]
다음 영상에서 다시
[17:11]
만나뵙겠습니다. 안녕히 계세요.