Instructions to use HuggingFaceM4/idefics-80b-instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use HuggingFaceM4/idefics-80b-instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="HuggingFaceM4/idefics-80b-instruct")# Load model directly from transformers import AutoProcessor, AutoModelForImageTextToText processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics-80b-instruct") model = AutoModelForImageTextToText.from_pretrained("HuggingFaceM4/idefics-80b-instruct") - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use HuggingFaceM4/idefics-80b-instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "HuggingFaceM4/idefics-80b-instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HuggingFaceM4/idefics-80b-instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/HuggingFaceM4/idefics-80b-instruct
- SGLang
How to use HuggingFaceM4/idefics-80b-instruct with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "HuggingFaceM4/idefics-80b-instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HuggingFaceM4/idefics-80b-instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "HuggingFaceM4/idefics-80b-instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HuggingFaceM4/idefics-80b-instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use HuggingFaceM4/idefics-80b-instruct with Docker Model Runner:
docker model run hf.co/HuggingFaceM4/idefics-80b-instruct
Multi-GPU inference.
I can run on 2 GPU, but with 3 or 4 GPUs i get errors like these:RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cuda:1)
orRuntimeError: Expected all tensors to be on the same device, but found at least two devices
Why?
I run the inference like this:
checkpoint = "HuggingFaceM4/idefics-80b-instruct"
device = "cuda"
with init_empty_weights():
model = IdeficsForVisionText2Text.from_pretrained(
checkpoint,
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True,
)
model_cache = '/workspace/HF_HOME/hub/models--HuggingFaceM4--idefics-80b-instruct/snapshots/a14d258b1be2a74a3604483de552c33121a98391'
model = load_checkpoint_and_dispatch(
model,
model_cache,
device_map="auto",
)
model = model.eval()
processor = AutoProcessor.from_pretrained(checkpoint)
model = load_checkpoint_and_dispatch(
model,
model_cache,
device_map="auto",
)
processor = AutoProcessor.from_pretrained(checkpoint)
def generate_single(image):
prompt = [
"User:",
image,
(
"Write caption for the image"
"<end_of_utterance>"),
(
"\nAssistant: an icon"
),
]
inputs = processor(prompt, return_tensors="pt").to("cuda")
generated_ids = model.generate(**inputs, bad_words_ids=bad_words_ids, max_length=100)
input_ids = inputs['input_ids']
generated_text = processor.decode(generated_ids[:, input_ids.shape[1]:][0], skip_special_tokens=True)
return f"an icon {generated_text}"
Hello, have you solved the problem? I try to load the model like this:
with init_empty_weights():
self.model = IdeficsForVisionText2Text.from_pretrained(
model_name_or_path,
torch_dtype=torch.bfloat16,
)
self.model = load_checkpoint_and_dispatch(
self.model,
checkpoint,
device_map="auto",
).eval()
self.processor = AutoProcessor.from_pretrained(model_name_or_path)
But all the weights are loaded on cuda:0, and this is strange.🤥
Hello, have you solved the problem? I try to load the model like this:
with init_empty_weights(): self.model = IdeficsForVisionText2Text.from_pretrained( model_name_or_path, torch_dtype=torch.bfloat16, ) self.model = load_checkpoint_and_dispatch( self.model, checkpoint, device_map="auto", ).eval() self.processor = AutoProcessor.from_pretrained(model_name_or_path)But all the weights are loaded on
cuda:0, and this is strange.🤥
I'm so stupid😅, I just set CUDA_VISIBLE_DEVICES=0, and forgot it.
@Lemoncoke I could not even think about CUDA_VISIBLE_DEVICES, almost never used it, so chances of me helping you would be low anyways :(
I'm so stupid😅, I just set CUDA_VISIBLE_DEVICES=0, and forgot it.
haha, glad you found it though @Lemoncoke !