Text Generation
Transformers
Safetensors
MLX
code
llama
fill-in-the-middle
multi-token-prediction
speculative-decoding
apple-silicon
text-generation-inference
Instructions to use philipjohnbasile/wisp-coder-110m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use philipjohnbasile/wisp-coder-110m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="philipjohnbasile/wisp-coder-110m")# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("philipjohnbasile/wisp-coder-110m") model = AutoModelForCausalLM.from_pretrained("philipjohnbasile/wisp-coder-110m", device_map="auto") - MLX
How to use philipjohnbasile/wisp-coder-110m with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # if on a CUDA device, also pip install mlx[cuda] # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("philipjohnbasile/wisp-coder-110m") prompt = "Once upon a time in" text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- vLLM
How to use philipjohnbasile/wisp-coder-110m with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "philipjohnbasile/wisp-coder-110m" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "philipjohnbasile/wisp-coder-110m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/philipjohnbasile/wisp-coder-110m
- SGLang
How to use philipjohnbasile/wisp-coder-110m 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 "philipjohnbasile/wisp-coder-110m" \ --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": "philipjohnbasile/wisp-coder-110m", "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 "philipjohnbasile/wisp-coder-110m" \ --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": "philipjohnbasile/wisp-coder-110m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - MLX LM
How to use philipjohnbasile/wisp-coder-110m with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Generate some text mlx_lm.generate --model "philipjohnbasile/wisp-coder-110m" --prompt "Once upon a time"
- Docker Model Runner
How to use philipjohnbasile/wisp-coder-110m with Docker Model Runner:
docker model run hf.co/philipjohnbasile/wisp-coder-110m
- Atomic Chat
| { | |
| "ablation_config": { | |
| "path": "config/run2_no_fim.json", | |
| "sha256": "5692f15944dcef9a8a64a96ea5b5888b39024de321c2bb9a302f1c522bc3ea12" | |
| }, | |
| "allowed_config_changes": { | |
| "data_build_contract": [ | |
| null, | |
| { | |
| "require_fresh_output_dir": true, | |
| "schema_version": 2, | |
| "source_index": { | |
| "path": "data/shards/index.json", | |
| "schema_version": 1, | |
| "sha256": "862b1a9b7cc6c3c0d31299e21b352e2b736de767a99bf7fa38213d6c60fc0db0" | |
| }, | |
| "source_integrity_receipt": "config/run1_shard_integrity_receipt.json", | |
| "source_integrity_receipt_sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471", | |
| "strategy": "run1_deterministic_no_fim_normalization_v1" | |
| } | |
| ], | |
| "data_dir": [ | |
| "data/shards", | |
| "data/shards-no-fim" | |
| ], | |
| "data_index": [ | |
| "data/shards/index.json", | |
| "data/shards-no-fim/index.json" | |
| ], | |
| "data_integrity": [ | |
| { | |
| "receipt": "config/run1_shard_integrity_receipt.json", | |
| "role": "current", | |
| "sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471" | |
| }, | |
| { | |
| "receipt": "config/run1_shard_integrity_receipt.json", | |
| "role": "source", | |
| "sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471" | |
| } | |
| ], | |
| "fim_rate": [ | |
| 0.7, | |
| 0.0 | |
| ], | |
| "out_dir": [ | |
| "out/run1", | |
| "out/run2-no-fim" | |
| ], | |
| "run_name": [ | |
| "wisp-run1-110m-code", | |
| "wisp-run2-110m-no-fim" | |
| ], | |
| "sources": [ | |
| [ | |
| { | |
| "data_dir": "python", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.24 | |
| }, | |
| { | |
| "data_dir": "javascript", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.13 | |
| }, | |
| { | |
| "data_dir": "typescript", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.12 | |
| }, | |
| { | |
| "data_dir": "go", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.09 | |
| }, | |
| { | |
| "data_dir": "rust", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.09 | |
| }, | |
| { | |
| "data_dir": "java", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.08 | |
| }, | |
| { | |
| "data_dir": "c", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.05 | |
| }, | |
| { | |
| "data_dir": "shell", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.03 | |
| }, | |
| { | |
| "data_dir": "sql", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.02 | |
| }, | |
| { | |
| "data_dir": "markdown", | |
| "quality_gate": true, | |
| "repo": "bigcode/starcoderdata", | |
| "text_field": "content", | |
| "weight": 0.07 | |
| }, | |
| { | |
| "name": "sample-10BT", | |
| "quality_gate": true, | |
| "repo": "HuggingFaceFW/fineweb-edu", | |
| "text_field": "text", | |
| "weight": 0.08 | |
| } | |
| ], | |
| null | |
| ] | |
| }, | |
| "amendments": [ | |
| { | |
| "amended_at": "2026-07-26T03:54:37Z", | |
| "kind": "pre-build-provenance-hardening", | |
| "previous_ablation_config_sha256": "7db4079b7d46b5c35502f52ffc2ffcfb891d385d0de9c1db99dfab3e668467b1", | |
| "previous_preparation_script_sha256": "6ebbd49a92de87582c429e2c0a5e2fd22792b7db1cbf44e37651b4eceaef7ff6", | |
| "reason": "Before any run 2 corpus was built, the shard builder was changed to refuse non-empty outputs and emit a schema-2 index binding the exact config, source list, tokenizer, seed, and requested budgets. This prevents partial or stale shards from entering E2.", | |
| "registered_endpoints_changed": false | |
| }, | |
| { | |
| "amended_at": "2026-07-26T04:17:33Z", | |
| "kind": "observed-sampler-reset-matching", | |
| "previous_ablation_config_sha256": "f82f1402e37d2fbcd320d80a0d470eb0dc9e5d888179532ab269c298ef9a2a0b", | |
| "previous_baseline_config_sha256": "c1b94316f669aff48ccb42ebd08b465e8d700cea6e94f75ccafbe646a1470704", | |
| "previous_checkpoint_script_sha256": null, | |
| "previous_data_script_sha256": "920cbc05ec7f9f94f21ea1633cb1393344e8b2eab66954e61cdc0cbe3ff7c880", | |
| "previous_training_script_sha256": "f6d217ad7804fefbf7ddff42aac4d9a08521b45a997b6b2dbfab3375f011da7b", | |
| "reason": "Before any run 2 corpus or training, the observed run 1 step-300 sampler reset was registered in both arms. Exact sampler state is now checkpointed, while legacy reconstruction is restricted to the registered run 1 lineage and observed NumPy 2.5.1 runtime. Checkpoint directory replacement is also atomic and recoverable. These changes control reset timing without claiming identical sampled examples across different arm shards and do not change model or optimizer math.", | |
| "registered_endpoints_changed": false | |
| }, | |
| { | |
| "amended_at": "2026-07-26T04:41:57Z", | |
| "kind": "pre-run2-training-data-truth-correction", | |
| "previous_corpus_script_sha256": "7180e0d69a543fa2ddcf76ef6fa035a14bab2f7e0dfc8a31413b416ad891886e", | |
| "reason": "Before any run 2 corpus build or training, the source cards and real stream schemas were audited. Run 1 used the structural filters, but its Hub rows did not activate the extension parsers because the iterator requested an absent path column. The future iterator now selects the real StarCoderData path field, fails closed on schema drift, and removes its leading repository metadata only for syntax parsing. E2 must not use this corrected source stream to select a different document population; its no-FIM shards must be derived from run 1 ordered units. This corrects the disclosure and future source streaming without changing the active run 1 process, existing shards, model math, or registered endpoints.", | |
| "registered_endpoints_changed": false, | |
| "training_data_receipt_sha256": "c28d35deae12dd310a49bf7cafe02623effd982b7349fc2d75d71e38692f9af0" | |
| }, | |
| { | |
| "amended_at": "2026-07-26T05:38:59Z", | |
| "derivation_script_sha256": "fcf252eb4b248a08a1ffb7e3feacec54d040b459f44cb41b499d5baf7773ba09", | |
| "kind": "pre-run2-deterministic-token-normalization", | |
| "previous_ablation_config_sha256": "b5742305b75031bd55ddce2b87f43e7e9f55e49166b69faa772fa5161e6f10d4", | |
| "previous_baseline_config_sha256": "0e56d381e836ffbd32d0ba423335c076863afb9282278533b570dc9f757f1515", | |
| "previous_data_script_sha256": "7b09770f3c30801c7931951275842dc7960ccdb83397351fe3a4b161639f15fd", | |
| "previous_preparation_script_sha256": "2a4bff27b744671e7504e1207ce43c35be5a1ec6713e48266943a433897fb479", | |
| "previous_training_data_receipt_sha256": "c28d35deae12dd310a49bf7cafe02623effd982b7349fc2d75d71e38692f9af0", | |
| "reason": "Before any run 2 corpus build or training, every current run 1 shard was hash-attested and parsed with the visible FIM grammar. The registered derivation removes FIM framing, restores 33 detectable internal EOS tokens across 27 same-shard groups, and writes one schema-3 output shard plus unit sidecar per source shard. It deterministically preserves 4,992,043,184 normalized train tokens and 19,949,502 normalized validation tokens without claiming exact recovery of original examples or boundaries. This changes only how the future no-FIM corpus is derived and does not change the active run 1 process, model math, or registered endpoints.", | |
| "registered_endpoints_changed": false, | |
| "run1_shard_integrity_receipt_sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471" | |
| }, | |
| { | |
| "amended_at": "2026-07-26T15:03:00Z", | |
| "kind": "post-recovery-runtime-code-resync", | |
| "previous_checkpoint_script_sha256": "6c35b7438d1377ccf3c5991f4be4c1c24a02159e0fd2562bbe936a11fe2fb438", | |
| "previous_data_script_sha256": "bbc8ab805d8bb5f44e6c89ed93bfe15f45d8edbcbc4874d0a572a96033863154", | |
| "previous_training_script_sha256": "266ae8f64e03b0a4ebe77474a6260dd647aca886aa0322616b5ff7bbd5d0bb34", | |
| "reason": "e2_contract.py failed with 'training_script hash differs from receipt' when run against the current tree. Traced to commit 05c0d45 (Harden Run 1 recovery and immutable promotion), the mid-run interruption recovery commit, which changed train.py, checkpoint_fs.py, and data.py (atomic checkpoint directory exchange, sampler state preservation) after this receipt was last amended and never re-registered against the result. No run 2 corpus or training has occurred; this only resyncs the pinned hashes to the code that will actually run E2, and confirmed by diff that the drifting commit is Run 1 recovery infrastructure hardening, not a change to fim_rate, data selection, or any registered endpoint.", | |
| "registered_endpoints_changed": false | |
| }, | |
| { | |
| "amended_at": "2026-07-27T04:45:00Z", | |
| "kind": "gqa-native-attention-resync", | |
| "previous_model_script_sha256": "b281c8041a25857ad50c4618019d416ed22b65badef97d35dd6d191514a58bec", | |
| "reason": "model.py's Attention class called mx.repeat on k and v to tile them from n_kv_heads to n_heads before mx.fast.scaled_dot_product_attention. MLX's own documentation states the opposite for grouped query attention: k and v should not be pre-tiled to match q. The repeat materialized k and v at 3x their needed size (n_heads 12 over n_kv_heads 4) in every layer, every micro-step, pure wasted memory bandwidth. Removed after proving bit-identical output against the tiled path across three head-ratio geometries including the real model's, plus a negative control confirming the comparison can detect a real difference (scripts/test_gqa_attention.py). This changes only how attention is computed inside the kernel dispatch, not the math, the model architecture, the data, or any registered endpoint.", | |
| "registered_endpoints_changed": false | |
| }, | |
| { | |
| "amended_at": "2026-07-31T03:50:53Z", | |
| "kind": "pre-run2-fim-unit-disclosure-correction", | |
| "previous_data_document_sha256": "bbc9194684f6fe3e3001ab76b8774752273d4a1f6b40d803a7d193846153a610", | |
| "previous_model_card_template_sha256": "eb3dbc7d0075efc857b40be09ba890b654cd2c4ba257fead2ab0a6e36aa2d59c", | |
| "previous_training_data_contract_sha256": "5821ca6b723c203c6386bbd3095a84ffb7648f2c6b4aac45e9e2017c3da78845", | |
| "previous_training_data_receipt_sha256": "23d89413e74bbaff3b93e5edbb4df56a81a5c78dd784bcbbecfd52977bd1767a", | |
| "reason": "After run 1 and its registered E1 and E3 measurements, but before any run 2 output or training, a release audit found that DATA.md and MODEL_CARD.md described fim_rate 0.7 as a per-document probability. The preserved build source and log show that prepare_data.py first split tokenized documents into chunks of at most 1024 tokens, then selected FIM independently for each chunk. The publication documents and training-data receipt now state the actual unit and explicitly reject per-document and per-window interpretations. This corrects disclosure only; it changes no shard, checkpoint, model or optimizer math, E2 input, or registered endpoint.", | |
| "registered_endpoints_changed": false | |
| } | |
| ], | |
| "audit_corpus_script": { | |
| "path": "scripts/audit_corpus.py", | |
| "sha256": "3e115fd82b89bdf2e74c9791ddbc1bfc4ac10300cca8c6ce943069a8656a2391" | |
| }, | |
| "baseline_config": { | |
| "path": "config/run1.json", | |
| "sha256": "f1683a7b00bf1b1e93654ebb366fa0072ba6092b0dbad10272e9353196c3532d" | |
| }, | |
| "baseline_revision_evidence": { | |
| "kind": "local_huggingface_cache_refs_captured_after_run1_corpus_build", | |
| "limitation": "This is repository-revision evidence, not a per-document raw-corpus manifest for run 1. Source drift between the run 1 build and the captured cache refs cannot be ruled out." | |
| }, | |
| "checkpoint_contracts": { | |
| "run1": { | |
| "analysis_role": "trained", | |
| "run_name": "wisp-run1-110m-code", | |
| "step": 19073 | |
| }, | |
| "run2": { | |
| "analysis_role": "no-fim-ablation", | |
| "run_name": "wisp-run2-110m-no-fim", | |
| "step": 19073 | |
| } | |
| }, | |
| "checkpoint_script": { | |
| "path": "checkpoint_fs.py", | |
| "sha256": "96e951a223a557de8559730d73a229cea5432c39957918ff79f9e81a30f69e50" | |
| }, | |
| "corpus_build": { | |
| "exact_original_units_proven": false, | |
| "index_schema_version": 3, | |
| "normalized_train_tokens": 4992043184, | |
| "normalized_validation_tokens": 19949502, | |
| "one_output_shard_per_source": true, | |
| "output_policy": "fresh_directory_fail_closed", | |
| "requires_distinct_empty_data_dir": true, | |
| "scheduled_training_positions": 4999872512, | |
| "source_bytes": 10056013702, | |
| "source_files": 52, | |
| "source_index": { | |
| "path": "data/shards/index.json", | |
| "schema_version": 1, | |
| "sha256": "862b1a9b7cc6c3c0d31299e21b352e2b736de767a99bf7fa38213d6c60fc0db0" | |
| }, | |
| "source_integrity_receipt": { | |
| "path": "config/run1_shard_integrity_receipt.json", | |
| "sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471" | |
| }, | |
| "strategy": "run1_deterministic_no_fim_normalization_v1", | |
| "unit_sidecars": true | |
| }, | |
| "corpus_script": { | |
| "path": "scripts/corpus.py", | |
| "sha256": "05afba561a6258812d2baa802456c29c00d30955bec7f5c46389b90b2dad9e93" | |
| }, | |
| "data_script": { | |
| "path": "data.py", | |
| "sha256": "7a15626912afb93802b76450e5918a7e8d8c67aad295df4c96cde1129da1c094" | |
| }, | |
| "dataset_revisions": { | |
| "HuggingFaceFW/fineweb-edu": "87f09149ef4734204d70ed1d046ddc9ca3f2b8f9", | |
| "bigcode/starcoderdata": "9fc30b578cedaec69e47302df72cf00feed7c8c4" | |
| }, | |
| "derivation_script": { | |
| "path": "scripts/derive_no_fim.py", | |
| "sha256": "fcf252eb4b248a08a1ffb7e3feacec54d040b459f44cb41b499d5baf7773ba09" | |
| }, | |
| "evaluation_settings": { | |
| "bins": 4, | |
| "depth": 4, | |
| "dtype": "bfloat16", | |
| "examples": 200, | |
| "prefix_len": 256, | |
| "seed": 0, | |
| "span_len": 64, | |
| "suffix_len": 128, | |
| "temperature": 1.0, | |
| "top_k": 0 | |
| }, | |
| "holdout": { | |
| "path": "data/eval/holdout.clean.jsonl", | |
| "sha256": "c8450430853b60785cefb5dee24f7d4f01412db27af57b316b7c234bc42cd047" | |
| }, | |
| "instrument_version": 4, | |
| "model_script": { | |
| "path": "model.py", | |
| "sha256": "8abcc6bfd1741ba5ed3c2624467dc7b3b05488909cfccbdeb1fc49a5e3fb4b41" | |
| }, | |
| "preparation_script": { | |
| "path": "scripts/prepare_data.py", | |
| "sha256": "dc9f11dd96eadcd65917b62bd7ac8c641266b99fd1225cb4cdfea0ef08654d30" | |
| }, | |
| "primary_endpoint": { | |
| "bootstrap_samples": 4000, | |
| "bootstrap_seed": 0, | |
| "bootstrap_unit": "paired_target_document", | |
| "depth": 2, | |
| "metric": "(run1_fim_shuf_minus_l2r)_minus_(run2_fim_shuf_minus_l2r)", | |
| "positive_when": "ci95_lower_gt_0" | |
| }, | |
| "registered_at": "2026-07-26T03:31:13Z", | |
| "run1_shard_integrity_receipt": { | |
| "path": "config/run1_shard_integrity_receipt.json", | |
| "sha256": "5831ecd4a471fbe07e19b212bc3de44bed0b0b6b456083e888f66802937bf471" | |
| }, | |
| "runtime_code_evidence": { | |
| "kind": "matched_sampler_reset_with_post_build_shard_attestation", | |
| "limitation": "Run 1 did not record source-file hashes or sampler state in its pre-fix checkpoints. A post-build receipt now hashes all 52 current shard files and binds deterministic visible-grammar normalization, but it does not prove that the bytes were unchanged since training began or recover exact original units. The step-300 process recovery reset the legacy sampler, causing 78,643,200 scheduled token positions, 1.57 percent of the training budget, to replay earlier random windows. sampler_reset_steps [300] matches that reset timing in both arms. Later checkpoints preserve exact sampler RNG state. Exact sampled-example equivalence still cannot be proven." | |
| }, | |
| "schema_version": 1, | |
| "secondary_endpoint": { | |
| "bootstrap_samples": 4000, | |
| "bootstrap_seed": 0, | |
| "bootstrap_unit": "paired_target_document", | |
| "depth": 2, | |
| "metric": "(run1_fim_minus_fim_shuf)_minus_(run2_fim_minus_fim_shuf)" | |
| }, | |
| "source_acceptance_receipt": { | |
| "path": "config/eval_holdout_receipt.json", | |
| "sha256": "d24d4d8e41d75c91b2ff72a04f54a4519c15f1b362e70664cbfe1a12c736601d" | |
| }, | |
| "status": "format_ablation_registered", | |
| "tokenizer": { | |
| "path": "tokenizer/code32k.json", | |
| "sha256": "401a28c1f079050c48f6438830ca772d161d897e3cf2f30588d9ddc587dc6081" | |
| }, | |
| "training_data_contract": { | |
| "path": "scripts/training_data_contract.py", | |
| "sha256": "093e80ece400ca9b4bfe307972eb7dabee79d8a920b569b5e360262ba0e204dd" | |
| }, | |
| "training_data_receipt": { | |
| "path": "config/training_data_receipt.json", | |
| "sha256": "b6d1ad6d3b65b9c540ab572ce5f1053e91ec1d6afb95722075640d4864f24621" | |
| }, | |
| "training_script": { | |
| "path": "train.py", | |
| "sha256": "d194337982362a9b0728cbaae24f245170d83f673aa6ce3323ddec25ecfcef30" | |
| } | |
| } | |