Instructions to use skillsafe-ai/vit-gpt2-image-captioning with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers.js
How to use skillsafe-ai/vit-gpt2-image-captioning with Transformers.js:
// npm i @huggingface/transformers import { pipeline } from '@huggingface/transformers'; // Allocate pipeline const pipe = await pipeline('image-to-text', 'skillsafe-ai/vit-gpt2-image-captioning');
ViT-GPT2 image captioning
Browser-ready import artifacts for image-to-text, produced by SkillSafe's
reproducible converter (models/ in skillsafe.ai)
from a pinned upstream source. Every byte here is derivable from that source plus
the recipe below; nothing was edited by hand.
Provenance
| Upstream | https://huggingface.co/Xenova/vit-gpt2-image-captioning/tree/215b4edcb7ec1fad5905a18a03f7b2007f6fabd0 |
| Upstream SHA-256 / commit | 215b4edcb7ec1fad5905a18a03f7b2007f6fabd0 |
| Recipe | recipes/vit-gpt2-image-captioning.yaml β sha256 2e3ec6f04880364908c41f2a7fe849239cb5a998b4ab6ffceeb11cf8f69e3212 |
| Toolchain | Python 3.12.13, torch 2.10.0, onnx 1.23.0, onnxruntime 1.30.0 on Darwin 25.6.0 arm64 |
| Converted | 2026-09-22T21:56:40+00:00 |
Files
| file | class | size | SHA-256 |
|---|---|---|---|
config.json |
bundle | 0.00 MB | f65c81039a672962d686f71ee0242f0c89dc020a0e3f193a989a696bf3f9515e |
generation_config.json |
bundle | 0.00 MB | 997e1f943576edcc46e1b93078ec0e72054a62b4c7f521da42a1eab43c4c1d0c |
merges.txt |
bundle | 0.44 MB | 1ce1664773c50f3e0cc8842619a93edc4624525b728b188a9e0be33b7726adc5 |
onnx/decoder_model_merged.onnx |
registry (fp32) | 586.53 MB | df4abab679e8fa8d5c2140dd1ce83d136e7d47bc08008c9d8b3860643c502776 |
onnx/decoder_model_merged_quantized.onnx |
registry (q8) | 151.25 MB | 1f3ec53b5fc3614c0b54ee786755a7ec3007841f57543f8e241499edfadfa98f |
onnx/encoder_model.onnx |
registry (fp32, q8) | 327.53 MB | 1e624fcd6a4a6a702dd1b60244adc6b6cbd169dcf3fbf9643be21a9bcf090b29 |
preprocessor_config.json |
bundle | 0.00 MB | 76304e9a1deb0d5f78349a57ad9d8057f36476c29bd292e907e2e8c451c93e9d |
special_tokens_map.json |
bundle | 0.00 MB | 8bcf4e58d0970bbcb3b111a4c1e297c082fbf61253b14b3c0c8f2972ccb61ba4 |
tokenizer.json |
bundle | 2.01 MB | 6e785cd4f004c9291dadeba7d8d1c2871318d368a1cfcd416c0571dcd8f11413 |
tokenizer_config.json |
bundle | 0.00 MB | 5b477c376e81670409e943fc7c8233a0356c8488e05a8aa246082a1d29e8d609 |
vocab.json |
bundle | 0.76 MB | 3ba3c3109ff33976c4bd966589c11ee14fcaa1f4c9e5e154c2ed7f99d80709e7 |
registry files are parameter files served from models.skillsafe.ai once vetted;
bundle files ship inside an app; registry-shared is a runtime library reused by
every model of the same architecture.
Verification
Imported as published upstream (no conversion). Each file is pinned by SHA-256 to its source; every ONNX file passed onnx.checker and a CPU smoke run under onnxruntime with zero-filled inputs at the declared shapes:
| file | inputs | outputs | ms |
|---|---|---|---|
onnx/decoder_model_merged.onnx |
input_ids[1, 4], encoder_hidden_states[1, 197, 768], past_key_values.0.key[1, 12, 1, 64], past_key_values.0.value[1, 12, 1, 64], past_key_values.1.key[1, 12, 1, 64], past_key_values.1.value[1, 12, 1, 64], past_key_values.2.key[1, 12, 1, 64], past_key_values.2.value[1, 12, 1, 64], past_key_values.3.key[1, 12, 1, 64], past_key_values.3.value[1, 12, 1, 64], past_key_values.4.key[1, 12, 1, 64], past_key_values.4.value[1, 12, 1, 64], past_key_values.5.key[1, 12, 1, 64], past_key_values.5.value[1, 12, 1, 64], past_key_values.6.key[1, 12, 1, 64], past_key_values.6.value[1, 12, 1, 64], past_key_values.7.key[1, 12, 1, 64], past_key_values.7.value[1, 12, 1, 64], past_key_values.8.key[1, 12, 1, 64], past_key_values.8.value[1, 12, 1, 64], past_key_values.9.key[1, 12, 1, 64], past_key_values.9.value[1, 12, 1, 64], past_key_values.10.key[1, 12, 1, 64], past_key_values.10.value[1, 12, 1, 64], past_key_values.11.key[1, 12, 1, 64], past_key_values.11.value[1, 12, 1, 64], use_cache_branch[1] | logits[1, 4, 50257], present.0.key[1, 12, 4, 64], present.0.value[1, 12, 4, 64], present.1.key[1, 12, 4, 64], present.1.value[1, 12, 4, 64], present.2.key[1, 12, 4, 64], present.2.value[1, 12, 4, 64], present.3.key[1, 12, 4, 64], present.3.value[1, 12, 4, 64], present.4.key[1, 12, 4, 64], present.4.value[1, 12, 4, 64], present.5.key[1, 12, 4, 64], present.5.value[1, 12, 4, 64], present.6.key[1, 12, 4, 64], present.6.value[1, 12, 4, 64], present.7.key[1, 12, 4, 64], present.7.value[1, 12, 4, 64], present.8.key[1, 12, 4, 64], present.8.value[1, 12, 4, 64], present.9.key[1, 12, 4, 64], present.9.value[1, 12, 4, 64], present.10.key[1, 12, 4, 64], present.10.value[1, 12, 4, 64], present.11.key[1, 12, 4, 64], present.11.value[1, 12, 4, 64] | 17.3 |
onnx/decoder_model_merged_quantized.onnx |
input_ids[1, 4], encoder_hidden_states[1, 197, 768], past_key_values.0.key[1, 12, 1, 64], past_key_values.0.value[1, 12, 1, 64], past_key_values.1.key[1, 12, 1, 64], past_key_values.1.value[1, 12, 1, 64], past_key_values.2.key[1, 12, 1, 64], past_key_values.2.value[1, 12, 1, 64], past_key_values.3.key[1, 12, 1, 64], past_key_values.3.value[1, 12, 1, 64], past_key_values.4.key[1, 12, 1, 64], past_key_values.4.value[1, 12, 1, 64], past_key_values.5.key[1, 12, 1, 64], past_key_values.5.value[1, 12, 1, 64], past_key_values.6.key[1, 12, 1, 64], past_key_values.6.value[1, 12, 1, 64], past_key_values.7.key[1, 12, 1, 64], past_key_values.7.value[1, 12, 1, 64], past_key_values.8.key[1, 12, 1, 64], past_key_values.8.value[1, 12, 1, 64], past_key_values.9.key[1, 12, 1, 64], past_key_values.9.value[1, 12, 1, 64], past_key_values.10.key[1, 12, 1, 64], past_key_values.10.value[1, 12, 1, 64], past_key_values.11.key[1, 12, 1, 64], past_key_values.11.value[1, 12, 1, 64], use_cache_branch[1] | logits[1, 4, 50257], present.0.key[1, 12, 4, 64], present.0.value[1, 12, 4, 64], present.1.key[1, 12, 4, 64], present.1.value[1, 12, 4, 64], present.2.key[1, 12, 4, 64], present.2.value[1, 12, 4, 64], present.3.key[1, 12, 4, 64], present.3.value[1, 12, 4, 64], present.4.key[1, 12, 4, 64], present.4.value[1, 12, 4, 64], present.5.key[1, 12, 4, 64], present.5.value[1, 12, 4, 64], present.6.key[1, 12, 4, 64], present.6.value[1, 12, 4, 64], present.7.key[1, 12, 4, 64], present.7.value[1, 12, 4, 64], present.8.key[1, 12, 4, 64], present.8.value[1, 12, 4, 64], present.9.key[1, 12, 4, 64], present.9.value[1, 12, 4, 64], present.10.key[1, 12, 4, 64], present.10.value[1, 12, 4, 64], present.11.key[1, 12, 4, 64], present.11.value[1, 12, 4, 64] | 23.6 |
onnx/encoder_model.onnx |
pixel_values[1, 3, 224, 224] | last_hidden_state[1, 197, 768] | 25.4 |
Use in the browser
import * as ort from "onnxruntime-web";
const session = await ort.InferenceSession.create("https://huggingface.co/skillsafe-ai/vit-gpt2-image-captioning/resolve/main/onnx/decoder_model_merged.onnx", { executionProviders: ["webgpu", "wasm"] });
Contract (onnx/decoder_model_merged.onnx): input input_ids int64 ['batch_size', 'decoder_sequence_length'], encoder_hidden_states float32 ['batch_size', 'encoder_sequence_length', 768], past_key_values.0.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.0.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.1.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.1.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.2.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.2.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.3.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.3.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.4.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.4.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.5.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.5.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.6.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.6.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.7.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.7.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.8.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.8.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.9.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.9.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.10.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.10.value float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.11.key float32 ['batch_size', 12, 'past_sequence_length', 64], past_key_values.11.value float32 ['batch_size', 12, 'past_sequence_length', 64], use_cache_branch bool [1] β output logits float32 ['batch_size', 'decoder_sequence_length', 50257], present.0.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.0.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.1.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.1.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.2.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.2.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.3.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.3.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.4.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.4.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.5.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.5.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.6.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.6.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.7.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.7.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.8.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.8.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.9.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.9.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.10.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.10.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.11.key float32 ['batch_size', 12, 'past_sequence_length + 1', 64], present.11.value float32 ['batch_size', 12, 'past_sequence_length + 1', 64]. Opset 11.
Licence and attribution
vit-gpt2-image-captioning: nlpconnect (Ankur Kumar), Apache License 2.0 (https://huggingface.co/nlpconnect/vit-gpt2-image-captioning); ONNX export by Xenova.
Licence: Apache-2.0 β notice: https://huggingface.co/nlpconnect/vit-gpt2-image-captioning/blob/main/README.md. The conversion recipe and this model card are part of the SkillSafe repository and carry its licence; the weights remain under the upstream licence above.
The full manifest.json in this repo records the recipe, sources, toolchain
(including the uv.lock hash) and per-file verification numbers.
- Downloads last month
- 20
Model tree for skillsafe-ai/vit-gpt2-image-captioning
Base model
nlpconnect/vit-gpt2-image-captioning