Instructions to use internlm/Intern-S1-mini with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use internlm/Intern-S1-mini with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="internlm/Intern-S1-mini", 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 AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("internlm/Intern-S1-mini", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use internlm/Intern-S1-mini with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "internlm/Intern-S1-mini" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "internlm/Intern-S1-mini", "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/internlm/Intern-S1-mini
- SGLang
How to use internlm/Intern-S1-mini 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 "internlm/Intern-S1-mini" \ --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": "internlm/Intern-S1-mini", "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 "internlm/Intern-S1-mini" \ --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": "internlm/Intern-S1-mini", "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 internlm/Intern-S1-mini with Docker Model Runner:
docker model run hf.co/internlm/Intern-S1-mini
Incorrectly tokenizes bracketed inorganic SMILES (e.g., [O-2].[Zn-].[Zn-])
I found that the Intern-S1 tokenizer breaks inorganic SMILES that contain fully bracketed ions.
Example:
[O-2].[Zn-].[Zn-]
Tokenizer output:
['[O', '-', '2', ']', '.[', 'Z', 'n', '-]', '.[', 'Z', 'n', '-]']
Issues:
- multi-character atom symbols inside brackets (
Zn) are split - bracketed ions (
[O-2],[Zn-]) are not treated as atomic units - symbols like
.[appear due to incorrect merging
In contrast, the tokenizer handles organic SMILES correctly:
O=C([O-])c1ccc(C(=O)[O-])c2c1CC2
→ ['O=C(', '[O-]', ')c', '1', ...]
How to treat bracketed ions (e.g., [Zn-], [O-2], [Fe+2], etc.) as single tokens the same way [O-] is handled?
The SMILES tokenization is trained on relevant corpora to combine words based on word frequency rather than to guarantee segmentation according to atomic units or ions. In fact, the vocabulary only contains "[O-]" and not "[Zn-]", the latter of which would be split into combinations of multiple lexical units. However, this is how it was trained, so the model will automatically "recognize" these combinations.
Therefore, the answer is that model cannot distinguish ions like [Zn-], and the best course of action is to leave it as is :)