7.8 KiB
์ด ๋ชจ๋ธ์ 2025๋ 5์ 20์ผ์ ์ถ์๋์์ผ๋ฉฐ, 2025๋ 6์ 26์ผ์ Hugging Face Transformers์ ์ถ๊ฐ๋์์ต๋๋ค.
Gemma3ngemma3n
๊ฐ์overview
Gemma3n์ ์ฌ์ ํ๋ จ๋ ๋ฒ์ ๊ณผ ๋ช ๋ น์ด ๊ธฐ๋ฐ ๋ฏธ์ธ์กฐ์ ๋ฒ์ ์ด ์ ๊ณต๋๋ ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ์ด๋ฉฐ, ๋ชจ๋ธ ํฌ๊ธฐ๋ E4B์ E2B ๋ ๊ฐ์ง๋ก ์ถ์๋์์ต๋๋ค. ์ธ์ด ๋ชจ๋ธ ์ํคํ ์ฒ๋ ์ด์ Gemma ๋ฒ์ ๊ณผ ๋ง์ ๋ถ๋ถ์ ๊ณต์ ํ์ง๋ง ์ด๋ฒ ๋ฒ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฒ์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ํ์ ์ผ๋ก ๊ต์ฐจ ์ ๋ฐ์ดํธ(AltUp), ํ์ต๋ ์ฆ๊ฐ ์์ฌ ๋ ์ด์ด(LAuReL), MatFormer, ๋ ์ด์ด๋ณ ์๋ฒ ๋ฉ, ํต๊ณ์ Top-k๋ฅผ ์ด์ฉํ ํ์ฑํ ํฌ์์ฑ(SPARk-Transformer), KV ์บ์ ๊ณต์ ๋ฑ์ด ์์ต๋๋ค. Gemma 3n์ Gemma 3์ ์ ์ฌํ ์ดํ ์ ํจํด์ ์ฌ์ฉํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ ํ ์ดํ ์ ๋ ์ด์ด 1๊ฐ๋ง๋ค ๋ก์ปฌ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์ ํ ์ดํ ์ ๋ ์ด์ด 4๊ฐ๋ฅผ ๊ต์ฐจ๋ก ๋ฐฐ์นํ๋ฉฐ, ์ต๋ ์ปจํ ์คํธ ๊ธธ์ด๋ 32k ํ ํฐ๊น์ง ์ง์ํฉ๋๋ค. ๋น์ ๋ชจ๋ฌ๋ฆฌํฐ์์๋ MobileNet v5๋ฅผ ๋น์ ์ธ์ฝ๋๋ก ๋์ ํ์ฌ ๊ธฐ๋ณธ ํด์๋๋ฅผ 768x768 ํฝ์ ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ํ ์ค๋์ค ๋ชจ๋ฌ๋ฆฌํฐ์์๋ Universal Speech Model(USM) ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋กญ๊ฒ ํ์ต๋ ์ค๋์ค ์ธ์ฝ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
๋ช ๋ น์ด ๊ธฐ๋ฐ ๋ฏธ์ธ์กฐ์ ๋ฒ์ ์ ์ง์ ์ฆ๋ฅ์ ๊ฐํ ํ์ต์ ํตํด ํ์ฒ๋ฆฌ ํ์ต ๋์์ต๋๋ค.
Gemma 3n์ ์๋ณธ ์ฒดํฌํฌ์ธํธ๋ [Gemma 3n][gemma3n-collection] ์ถ์ ํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
Tip
์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฐ์ ์๋ Gemma 3n ๋ชจ๋ธ์ ํด๋ฆญํ๋ฉด, Gemma๋ฅผ ๋ค์ํ ๋น์ , ์ค๋์ค, ์ธ์ด ์์ ์ ์ ์ฉํ๋ ๋ ๋ง์ ์์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์๋ ์์๋ [Pipeline] ๋๋ [AutoModel] ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ์ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
import torch
from transformers import pipeline
pipeline = pipeline(
task="image-text-to-text",
model="google/gemma-3n-e4b",
device=0,
dtype=torch.bfloat16
)
pipeline(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
text="์ด ์ด๋ฏธ์ง์ ๋ฌด์์ด ๋ณด์ด๋์?"
)
import torch
from transformers import AutoProcessor, Gemma3nForConditionalGeneration
model = Gemma3nForConditionalGeneration.from_pretrained(
"google/gemma-3n-e4b-it",
dtype=torch.bfloat16,
device_map="auto",
attn_implementation="sdpa"
)
processor = AutoProcessor.from_pretrained(
"google/gemma-3n-e4b-it",
padding_side="left"
)
messages = [
{
"role": "system",
"content": [
{"type": "text", "text": "๋น์ ์ ๋์์ด ๋๋ ์ด์์คํดํธ์
๋๋ค."}
]
},
{
"role": "user", "content": [
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
{"type": "text", "text": "์ด ์ด๋ฏธ์ง์ ๋ฌด์์ด ๋ณด์ด๋์?"},
]
},
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
return_dict=True,
return_tensors="pt",
add_generation_prompt=True,
).to(model.device)
output = model.generate(**inputs, max_new_tokens=50, cache_implementation="static")
print(processor.decode(output[0], skip_special_tokens=True))
์ฐธ๊ณ ์ฌํญnotes
-
[
Gemma3nForConditionalGeneration] ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง-์ค๋์ค-ํ ์คํธ, ์ด๋ฏธ์ง-ํ ์คํธ, ์ด๋ฏธ์ง-์ค๋์ค, ์ค๋์ค-ํ ์คํธ, ์ด๋ฏธ์ง ๋จ๋ , ์ค๋์ค ๋จ๋ ์ ๋ ฅ์ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. -
Gemma 3n์ ํ ๋ฒ์ ์ ๋ ฅ์ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ์ง์ํฉ๋๋ค. ๋ค๋ง ํ๋ก์ธ์์ ์ ๋ฌํ๊ธฐ ์ ์ ์ด๋ฏธ์ง๋ค์ด ๋ฐฐ์น ๋จ์๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋ฌถ์ฌ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฐฐ์น๋ ํ๋ ์ด์์ ์ด๋ฏธ์ง๋ฅผ ๋ด์ ๋ฆฌ์คํธ ํ์์ ๋๋ค.
url_cow = "https://media.istockphoto.com/id/1192867753/photo/cow-in-berchida-beach-siniscola.jpg?s=612x612&w=0&k=20&c=v0hjjniwsMNfJSuKWZuIn8pssmD5h5bSN1peBd1CmH4=" url_cat = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg" messages =[ { "role": "system", "content": [ {"type": "text", "text": "๋น์ ์ ๋์์ด ๋๋ ์ด์์คํดํธ์ ๋๋ค."} ] }, { "role": "user", "content": [ {"type": "image", "url": url_cow}, {"type": "image", "url": url_cat}, {"type": "text", "text": "์ด๋ค ์ด๋ฏธ์ง๊ฐ ๋ ๊ท์ฝ์ต๋๊น?"}, ] }, ] -
ํ๋ก์ธ์์ ์ ๋ฌ๋๋ ํ ์คํธ์๋ ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํด์ผ ํ๋ ์์น์
<image_soft_token>ํ ํฐ์ ํฌํจํด์ผ ํฉ๋๋ค. -
Gemma 3n์ ์ ๋ ฅ๋น ์ต๋ ํ๋์ ํ๊น ์ค๋์ค ํด๋ฆฝ๋ง ํ์ฉํฉ๋๋ค. ๋ค๋ง ํจ์ท ํ๋กฌํํธ์์๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋์ค ํด๋ฆฝ์ ํจ๊ป ์ ๊ณตํ ์ ์์ต๋๋ค.
-
ํ๋ก์ธ์์ ์ ๋ฌ๋๋ ํ ์คํธ์๋ ์ค๋์ค ํด๋ฆฝ์ ์ฝ์ ํด์ผ ํ๋ ์์น์
<audio_soft_token>ํ ํฐ์ ํฌํจํด์ผ ํฉ๋๋ค. -
ํ๋ก์ธ์์๋ ์ฑํ ๋ฉ์์ง๋ฅผ ๋ชจ๋ธ ์ ๋ ฅ ํ์์ผ๋ก ๋ณํํ๊ธฐ ์ํ ์์ฒด ๋ฉ์๋์ธ [
~ProcessorMixin.apply_chat_template]๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
Gemma3nAudioFeatureExtractortransformers.Gemma3nAudioFeatureExtractor
autodoc Gemma3nAudioFeatureExtractor
Gemma3nProcessortransformers.Gemma3nProcessor
autodoc Gemma3nProcessor
Gemma3nTextConfigtransformers.Gemma3nTextConfig
autodoc Gemma3nTextConfig
Gemma3nVisionConfigtransformers.Gemma3nVisionConfig
autodoc Gemma3nVisionConfig
Gemma3nAudioConfigtransformers.Gemma3nAudioConfig
autodoc Gemma3nAudioConfig
Gemma3nConfigtransformers.Gemma3nConfig
autodoc Gemma3nConfig
Gemma3nTextModeltransformers.Gemma3nTextModel
autodoc Gemma3nTextModel - forward
Gemma3nModeltransformers.Gemma3nModel
autodoc Gemma3nModel - forward
Gemma3nForCausalLMtransformers.Gemma3nForCausalLM
autodoc Gemma3nForCausalLM - forward
Gemma3nForConditionalGenerationtransformers.Gemma3nForConditionalGeneration
autodoc Gemma3nForConditionalGeneration - forward