Instructions to use OpenGVLab/InternVL2-1B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use OpenGVLab/InternVL2-1B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="OpenGVLab/InternVL2-1B", trust_remote_code=True) messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("OpenGVLab/InternVL2-1B", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use OpenGVLab/InternVL2-1B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "OpenGVLab/InternVL2-1B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OpenGVLab/InternVL2-1B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/OpenGVLab/InternVL2-1B
- SGLang
How to use OpenGVLab/InternVL2-1B 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 "OpenGVLab/InternVL2-1B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OpenGVLab/InternVL2-1B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'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 "OpenGVLab/InternVL2-1B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OpenGVLab/InternVL2-1B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use OpenGVLab/InternVL2-1B with Docker Model Runner:
docker model run hf.co/OpenGVLab/InternVL2-1B
fix config saving compatibility issue for transformers 4.45+
config = AutoConfig.from_pretrained("OpenGVLab/InternVL2-1B", trust_remote_code=True)
config.save_pretrained("internvl2-1b")
raises error:
if llm_config['architectures'][0] == 'LlamaForCausalLM':
KeyError: 'architectures'
the root cause that transformers added validation of non-default parameters for generation during config saving it requires initialize configuration class without parameters and as the result llm_config comes as None (and according to code above it become {} at llm config class init stage)
Try to downgrade to transformers==4.44.2
@Yeshenglong unfortunatly, I can not to do that, my project requires to use transformers 4.45. Can you please thinking about small fix for issue? I provided workaround that works for me (from logical point of view, it is really bug in code, you allow to provide empty dictionary as llm_config but after that does not care that it can be provided, so some default values should be filled.)
@Yeshenglong . The cause is that llm_config is a None object, initialized with an empty dictionary. For InternVL2-8B-MPO, I just handle that with this code:
self.vision_config = InternVisionConfig(**vision_config)
# Check architecture to initialize config
llm_config_architectures = llm_config.get("architectures", ["InternLM2ForCausalLM"])[0]
if llm_config_architectures == "LlamaForCausalLM":
self.llm_config = LlamaConfig(**llm_config)
elif llm_config_architectures == "InternLM2ForCausalLM":
self.llm_config = InternLM2Config(**llm_config)
elif llm_config_architectures == "Phi3ForCausalLM":
self.llm_config = Phi3Config(**llm_config)
elif llm_config_architectures == "Qwen2ForCausalLM":
self.llm_config = Qwen2Config(**llm_config)
else:
raise ValueError("Unsupported architecture: {}".format(llm_config_architectures))
I set the default value and executed the code with transformers==4.46.*. @katuni4ka you can refer to this solution if you wanna upgrade your transformers version