DrDavis's picture
Upload folder using huggingface_hub
17c6d62 verified

Chameleon [[chameleon]]

๊ฐœ์š” [[overview]]

Chameleon ๋ชจ๋ธ์€ META AI Chameleon ํŒ€์˜ ๋…ผ๋ฌธ Chameleon: Mixed-Modal Early-Fusion Foundation Models์—์„œ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Chameleon์€ ๋ฒกํ„ฐ ์–‘์žํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ† ํฐํ™”ํ•จ์œผ๋กœ์จ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์ „-์–ธ์–ด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๊ต์ฐจ๋œ ํ˜•์‹์„ ํฌํ•จํ•œ ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์œผ๋ฉฐ, ํ…์ŠคํŠธ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ชจ๋“ˆ์€ ์•„์ง ๊ณต๊ฐœ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์˜ ์ดˆ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ์ž„์˜์˜ ์ˆœ์„œ๋กœ ์ดํ•ดํ•˜๊ณ  ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” early-fusion ํ† ํฐ ๊ธฐ๋ฐ˜์˜ ํ˜ผํ•ฉ ๋ชจ๋‹ฌ(mixed-modal) ๋ชจ๋ธ์˜ ์ผ์ข…์ธ Chameleon์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์•ˆ์ •์ ์ธ ํ›ˆ๋ จ ์ ‘๊ทผ๋ฒ•, ์ •๋ ฌ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  early-fusion, ํ† ํฐ ๊ธฐ๋ฐ˜, ํ˜ผํ•ฉ ๋ชจ๋‹ฌ ์„ค์ •์— ๋งž์ถ˜ ์•„ํ‚คํ…์ฒ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ๋“ค์€ ์‹œ๊ฐ์  ์งˆ๋ฌธ ์‘๋‹ต, ์ด๋ฏธ์ง€ ์บก์…˜ ์ƒ์„ฑ, ํ…์ŠคํŠธ ์ƒ์„ฑ, ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ์žฅ๋ฌธ ํ˜ผํ•ฉ ๋ชจ๋‹ฌ ์ƒ์„ฑ ๋“ฑ ํฌ๊ด„์ ์ธ ์ž‘์—… ๋ฒ”์œ„์—์„œ ํ‰๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Chameleon์€ ๋‹จ์ผ ๋ชจ๋ธ์—์„œ ์ด๋ฏธ์ง€ ์บก์…˜ ์ƒ์„ฑ ์ž‘์—…์—์„œ์˜ ์ตœ์ฒจ๋‹จ ์„ฑ๋Šฅ์„ ํฌํ•จํ•œ ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋Šฅ๋ ฅ์„ ๋ณด์—ฌ์ฃผ๋ฉฐ, ํ…์ŠคํŠธ ์ „์šฉ ์ž‘์—…์—์„œ Llama-2๋ฅผ ๋Šฅ๊ฐ€ํ•˜๋ฉด์„œ Mixtral 8x7B์™€ Gemini-Pro์™€ ๊ฐ™์€ ๋ชจ๋ธ๋“ค ์‚ฌ์ด์—์„œ๋„ ๊ฒฝ์Ÿ๋ ฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ์˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๋„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กฌํ”„ํŠธ๋‚˜ ์ถœ๋ ฅ์— ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ์˜ ํ˜ผํ•ฉ ์‹œํ€€์Šค๊ฐ€ ํฌํ•จ๋œ ์ƒˆ๋กœ์šด ์žฅ๋ฌธ ํ˜ผํ•ฉ ๋ชจ๋‹ฌ ์ƒ์„ฑ ํ‰๊ฐ€์—์„œ, ์ธ๊ฐ„์˜ ํŒ๋‹จ์— ๋”ฐ๋ฅด๋ฉด Gemini Pro์™€ GPT-4V๋ฅผ ํฌํ•จํ•œ ํ›จ์”ฌ ๋” ํฐ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ๊ณผ ๋™๋“ฑํ•˜๊ฑฐ๋‚˜ ์ด๋ฅผ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Chameleon์€ ์™„์ „ํ•œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋ฌธ์„œ์˜ ํ†ตํ•ฉ ๋ชจ๋ธ๋ง์—์„œ ์ค‘์š”ํ•œ ๋ฐœ์ „์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

drawing

Chameleon์€ ์ด๋ฏธ์ง€๋ฅผ ์ด์‚ฐ์ ์ธ ํ† ํฐ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒกํ„ฐ ์–‘์žํ™” ๋ชจ๋“ˆ์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž๊ธฐํšŒ๊ท€ transformer๋ฅผ ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ๋…ผ๋ฌธ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ joaogante์™€ RaushanTurganbay๊ฐ€ ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํŒ [[usage-tips]]

  • ๋” ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด, ๋ฐฐ์น˜ ์ƒ์„ฑ ์‹œ padding_side="left"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑํ•˜๊ธฐ ์ „์— processor.tokenizer.padding_side = "left"๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

  • Chameleon์€ ์•ˆ์ „์„ฑ ์ •๋ ฌ์„ ์œ„ํ•ด ํŠœ๋‹๋˜์—ˆ์Œ์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋ธ์ด ์‘๋‹ต์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ, ์—ด๋ฆฐ ์งˆ๋ฌธ๋ณด๋‹ค๋Š” ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์งˆ๋ฌธ์„ ํ•ด๋ณด์„ธ์š”.

  • Chameleon์€ ์ฑ„ํŒ… ํ˜•์‹์œผ๋กœ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ์ƒ์„ฑ๋œ ํ…์ŠคํŠธ๋Š” ํ•ญ์ƒ "assistant's turn"์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์„œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ return_for_text_completion=True๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ…์ŠคํŠธ ์™„์„ฑ ์ƒ์„ฑ์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Transformers์—์„œ์˜ Chameleon ๊ตฌํ˜„์€ ์ด๋ฏธ์ง€ ์ž„๋ฒ ๋”ฉ์„ ๋ณ‘ํ•ฉํ•  ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ์ด๋ฏธ์ง€ ํ† ํฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠน๋ณ„ํ•œ ์ด๋ฏธ์ง€ ํ† ํฐ์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์•ฝ๋œ ํ† ํฐ ์ค‘ ํ•˜๋‚˜์ธ <reserved08707>๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ƒ์„ฑ์„ ์œ„ํ•ด ํ”„๋กฌํ”„ํŠธ์—์„œ ์ด๋ฏธ์ง€๊ฐ€ ์ž„๋ฒ ๋”ฉ๋  ์œ„์น˜์— <image>๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ [[usage-example]]

๋‹จ์ผ ์ด๋ฏธ์ง€ ์ถ”๋ก  [[single-image-inference]]

Chameleon์€ ๊ฒŒ์ดํ‹ฐ๋“œ(gated) ๋ชจ๋ธ์ด๋ฏ€๋กœ Hugging Face Hub์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๊ณ  ํ† ํฐ์œผ๋กœ ๋กœ๊ทธ์ธํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ์€ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๊ณ  ๋ฐ˜์ •๋ฐ€๋„(torch.bfloat16)๋กœ ์ถ”๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

from transformers import ChameleonProcessor, ChameleonForConditionalGeneration
import torch
from PIL import Image
import requests

processor = ChameleonProcessor.from_pretrained("facebook/chameleon-7b")
model = ChameleonForConditionalGeneration.from_pretrained("facebook/chameleon-7b", torch_dtype=torch.bfloat16, device_map="cuda")

# ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ ์ค€๋น„
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
prompt = "์ด ์ด๋ฏธ์ง€์—์„œ ๋ฌด์—‡์„ ๋ณด๋‚˜์š”?<image>"

inputs = processor(images=image, text=prompt, return_tensors="pt").to(model.device, dtype=torch.bfloat16)

# ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž๊ธฐํšŒ๊ท€์ ์œผ๋กœ ์™„์„ฑ
output = model.generate(**inputs, max_new_tokens=50)
print(processor.decode(output[0], skip_special_tokens=True))

๋‹ค์ค‘ ์ด๋ฏธ์ง€ ์ถ”๋ก  [[multi-image-inference]]

Chameleon์€ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ด๋ฉฐ, ์ด๋ฏธ์ง€๋“ค์€ ๋™์ผํ•œ ํ”„๋กฌํ”„ํŠธ์— ์†ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กฌํ”„ํŠธ์— ์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐฐ์น˜ ์ถ”๋ก ์—์„œ). ๋‹ค์Œ์€ ๊ทธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

from transformers import ChameleonProcessor, ChameleonForConditionalGeneration
import torch
from PIL import Image
import requests

processor = ChameleonProcessor.from_pretrained("facebook/chameleon-7b")

model = ChameleonForConditionalGeneration.from_pretrained("facebook/chameleon-7b", torch_dtype=torch.bfloat16, device_map="cuda")

# ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
image_stop = Image.open(requests.get(url, stream=True).raw)

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image_cats = Image.open(requests.get(url, stream=True).raw)

url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.jpg"
image_snowman = Image.open(requests.get(url, stream=True).raw)

# ๋ฐฐ์น˜๋œ ํ”„๋กฌํ”„ํŠธ ์ค€๋น„: ์ฒซ ๋ฒˆ์งธ๋Š” ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ํ”„๋กฌํ”„ํŠธ์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ๋‹จ์ผ ์ด๋ฏธ์ง€ ํ”„๋กฌํ”„ํŠธ์ž…๋‹ˆ๋‹ค
prompts = [
    "์ด ์ด๋ฏธ์ง€๋“ค์€ ๋ฌด์—‡์ด ๊ณตํ†ต์ ์ธ๊ฐ€์š”?<image><image>",
    "<image>์ด ์ด๋ฏธ์ง€์— ๋ฌด์—‡์ด ๋‚˜ํƒ€๋‚˜ ์žˆ๋‚˜์š”?"
]

# ์ด๋ฏธ์ง€๋“ค์„ ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ์—์„œ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
# ๊ฐ "<image>" ํ† ํฐ์€ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋‹ค์Œ "<image>" ํ† ํฐ์€ ๋‹ค์Œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
inputs = processor(images=[image_stop, image_cats, image_snowman], text=prompts, padding=True, return_tensors="pt").to(device="cuda", dtype=torch.bfloat16)

# ์ƒ์„ฑ
generate_ids = model.generate(**inputs, max_new_tokens=50)
processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)

๋ชจ๋ธ ์ตœ์ ํ™” [[model-optimization]]

Bitsandbytes๋ฅผ ์‚ฌ์šฉํ•œ ์–‘์žํ™” [[quantization-using-bitsandbytes]]

๋ชจ๋ธ์€ 8๋น„ํŠธ ๋˜๋Š” 4๋น„ํŠธ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์›๋ณธ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํฌ๊ฒŒ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๋จผ์ € bitsandbytes๋ฅผ ์„ค์น˜ํ•˜๊ณ (pip install bitsandbytes), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๋Š” GPU/๊ฐ€์†๊ธฐ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

bitsandbytes๋Š” CUDA ์ด์™ธ์˜ ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•˜๋„๋ก ๋ฆฌํŒฉํ„ฐ๋ง๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ROCm(AMD GPU) ๋ฐ Intel CPU ๊ตฌํ˜„์ด ์„ฑ์ˆ™ ๋‹จ๊ณ„์ด๋ฉฐ, Intel XPU๋Š” ์ง„ํ–‰ ์ค‘์ด๊ณ  Apple Silicon ์ง€์›์€ Q4/Q1์— ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ์ง€์นจ ๋ฐ ์ตœ์‹  ๋ฐฑ์—”๋“œ ์—…๋ฐ์ดํŠธ๋Š” ์ด ๋งํฌ๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

์ „์ฒด ๊ณต๊ฐœ ์ „์— ๋ฒ„๊ทธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ํ”ผ๋“œ๋ฐฑ์€ ์ด ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

์œ„์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

from transformers import ChameleonForConditionalGeneration, BitsAndBytesConfig

# ๋ชจ๋ธ ์–‘์žํ™” ๋ฐฉ์‹ ์ง€์ •
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = ChameleonForConditionalGeneration.from_pretrained("facebook/chameleon-7b", quantization_config=quantization_config, device_map="cuda")

Flash-Attention 2์™€ SDPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ ์†๋„ ํ–ฅ์ƒ [[use-flash-attention-2-and-sdpa-to-further-speed-up-generation]]

์ด ๋ชจ๋ธ์€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด Flash-Attention 2์™€ PyTorch์˜ torch.nn.functional.scaled_dot_product_attention๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. SDPA๋Š” ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ๋•Œ ๊ธฐ๋ณธ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. Flash Attention 2๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด ๋จผ์ € flash-attn์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒจํ‚ค์ง€ ์„ค์น˜์— ๋Œ€ํ•ด์„œ๋Š” ์›๋ณธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค. ์œ„์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

from transformers import ChameleonForConditionalGeneration

model_id = "facebook/chameleon-7b"
model = ChameleonForConditionalGeneration.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    attn_implementation="flash_attention_2"
).to(0)

ChameleonConfig [[transformers.ChameleonConfig]]

[[autodoc]] ChameleonConfig

ChameleonVQVAEConfig [[transformers.ChameleonVQVAEConfig]]

[[autodoc]] ChameleonVQVAEConfig

ChameleonProcessor [[transformers.ChameleonProcessor]]

[[autodoc]] ChameleonProcessor

ChameleonImageProcessor [[transformers.ChameleonImageProcessor]]

[[autodoc]] ChameleonImageProcessor - preprocess

ChameleonVQVAE [[transformers.ChameleonVQVAE]]

[[autodoc]] ChameleonVQVAE - forward

ChameleonModel [[transformers.ChameleonModel]]

[[autodoc]] ChameleonModel - forward

ChameleonForConditionalGeneration [[transformers.ChameleonForConditionalGeneration]]

[[autodoc]] ChameleonForConditionalGeneration - forward