Text Generation
Transformers
Safetensors
modilify_mk2
feature-extraction
diffusion
mixture-of-experts
custom-code
modilify-mk2
conversational
custom_code
Instructions to use modilify/Modilify-Mk2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use modilify/Modilify-Mk2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="modilify/Modilify-Mk2", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("modilify/Modilify-Mk2", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use modilify/Modilify-Mk2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "modilify/Modilify-Mk2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "modilify/Modilify-Mk2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/modilify/Modilify-Mk2
- SGLang
How to use modilify/Modilify-Mk2 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 "modilify/Modilify-Mk2" \ --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": "modilify/Modilify-Mk2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "modilify/Modilify-Mk2" \ --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": "modilify/Modilify-Mk2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use modilify/Modilify-Mk2 with Docker Model Runner:
docker model run hf.co/modilify/Modilify-Mk2
Download configuration_modilify_mk2.py from modilify/Modilify-Mk2: direct link, hf CLI and curl.
- Browser
- Download file 17.8 kB
-
https://huggingface.co/modilify/Modilify-Mk2/resolve/main/configuration_modilify_mk2.py
- Command line
-
hf download hf://modilify/Modilify-Mk2/configuration_modilify_mk2.py
-
curl -L -o configuration_modilify_mk2.py https://huggingface.co/modilify/Modilify-Mk2/resolve/main/configuration_modilify_mk2.py
17.8 kB
| """Strict text-only configuration for the schema25 GDN2 protocol.""" | |
| from __future__ import annotations | |
| from collections.abc import Mapping, Sequence | |
| from typing import Any | |
| from transformers.configuration_utils import PreTrainedConfig | |
| from transformers.models.diffusion_gemma import DiffusionGemmaTextConfig | |
| STATE_SCHEMA_VERSION = 25 | |
| # Keep topology stable; CE scope and normalization have separate objective tags. | |
| TRAINING_SCHEME = ( | |
| "gold_prefix_shared_commit_0_256_committed_ce_calibration_" | |
| "causal_throughput_terminal_sft" | |
| ) | |
| MEMORY_SCHEME = "dual_timescale_gdn2_trajectory_memory" | |
| MEMORY_ARCHITECTURE = "compact_gdn2_v2" | |
| CONFIG_PROTOCOL_ERROR = "ModilifyMk2 requires schema25 compact_gdn2_v2; older memory topologies require a new run." | |
| HISTORY_VIEWS = 4 | |
| COMMIT_SEQUENCE_LAYERS = 2 | |
| DENOISE_TEMPERATURE = 0.8 | |
| VOCAB_CHUNK_SIZE = 32_768 | |
| COMMIT_READINESS_OBJECTIVE = "frontier_prefix_budget_v2" | |
| TOKEN_CE_SUPERVISION = "valid_canvas_v1" | |
| TOKEN_CE_NORMALIZATION = "per_sample_exposure_v1" | |
| def require_current_checkpoint_protocol(metadata: Mapping[str, Any]) -> None: | |
| """Reject checkpoints that do not implement the GDN2 state topology.""" | |
| if ( | |
| metadata.get("state_schema_version") != STATE_SCHEMA_VERSION | |
| or metadata.get("training_scheme") != TRAINING_SCHEME | |
| or metadata.get("memory_scheme") != MEMORY_SCHEME | |
| or metadata.get("memory_architecture") != MEMORY_ARCHITECTURE | |
| ): | |
| raise RuntimeError( | |
| f"ModilifyMk2 checkpoint requires schema{STATE_SCHEMA_VERSION} {MEMORY_ARCHITECTURE}; " | |
| "older memory topologies cannot be restored. Start from the base model." | |
| ) | |
| class ModilifyMk2TextConfig(DiffusionGemmaTextConfig): | |
| model_type = "modilify_mk2_text" | |
| vocab_size: int = 262_144 | |
| hidden_size: int = 2816 | |
| intermediate_size: int = 2112 | |
| num_hidden_layers: int = 30 | |
| num_attention_heads: int = 16 | |
| num_key_value_heads: int = 8 | |
| head_dim: int = 256 | |
| max_position_embeddings: int = 262_144 | |
| sliding_window: int = 1024 | |
| use_bidirectional_attention: str | None = None | |
| num_global_key_value_heads: int | None = 2 | |
| global_head_dim: int = 512 | |
| num_experts: int | None = 128 | |
| top_k_experts: int | None = 8 | |
| moe_intermediate_size: int | None = 704 | |
| class ModilifyMk2Config(PreTrainedConfig): | |
| """Configuration with recurrent GDN2 trajectory memory.""" | |
| model_type = "modilify_mk2" | |
| sub_configs = {"text_config": ModilifyMk2TextConfig} | |
| def __init__( | |
| self, | |
| text_config: ModilifyMk2TextConfig | dict[str, Any] | None = None, | |
| *, | |
| canvas_length: int = 256, | |
| initializer_range: float = 0.02, | |
| tie_word_embeddings: bool = True, | |
| state_schema_version: int = STATE_SCHEMA_VERSION, | |
| training_scheme: str = TRAINING_SCHEME, | |
| memory_scheme: str = MEMORY_SCHEME, | |
| memory_architecture: str = MEMORY_ARCHITECTURE, | |
| latent_dim: int = 2816, | |
| latent_ffn_dim: int = 7168, | |
| latent_memory_slots: int = 256, | |
| latent_num_layers: int = 4, | |
| latent_num_heads: int = 16, | |
| latent_local_attention_window: int = 128, | |
| latent_history_length: int = 16, | |
| latent_tape_probes: int = 1, | |
| latent_tape_scheme: str = "gdn2_spatial_probe_v1", | |
| latent_history_views: int = HISTORY_VIEWS, | |
| latent_history_kv_rank: int | None = None, | |
| latent_working_last_block_global: bool = True, | |
| working_memory_bus: bool = True, | |
| persistent_memory_bus: bool = True, | |
| persistent_memory_write: str = "commit_only_transformer", | |
| commit_sequence_layers: int = COMMIT_SEQUENCE_LAYERS, | |
| commit_sequence_dim: int | None = None, | |
| writer_slot_gate: str = "per_slot", | |
| latent_working_bus_unfreeze_steps: int = 0, | |
| latent_persistent_bus_unfreeze_steps: int = 0, | |
| training_bptt_steps: int = 16, | |
| kv_cache_bucket_size: int = 128, | |
| turn_end_token_id: int = 106, | |
| terminal_token_ids: Sequence[int] | None = None, | |
| channel_end_token_id: int = 101, | |
| eos_token_id: int = 1, | |
| commit_failure_budget: float = 0.2, | |
| commit_top_k: int | None = 40, | |
| commit_min_p: float | None = 0.05, | |
| commit_target_confidence: float | None = 0.5, | |
| commit_entropy_weight: float = 1.0, | |
| commit_confidence_power: float = 1.0, | |
| commit_gold_alpha: float = 0.4, | |
| commit_gold_weight: float = 1.0, | |
| commit_readiness_failure_weight: float = 1.0, | |
| token_loss_weight: float = 1.0, | |
| token_ce_supervision: str = TOKEN_CE_SUPERVISION, | |
| token_ce_normalization: str = TOKEN_CE_NORMALIZATION, | |
| confidence_calibration_loss_weight: float = 0.1, | |
| commit_readiness_objective: str = COMMIT_READINESS_OBJECTIVE, | |
| commit_readiness_target_tokens: int = 16, | |
| commit_readiness_loss_weight: float = 0.1, | |
| commit_readiness_budget_margin: float = 0.02, | |
| commit_readiness_beta: float = 0.02, | |
| terminal_stop_loss_weight: float = 1.0, | |
| terminal_stop_target_probability: float = 0.95, | |
| **kwargs: Any, | |
| ) -> None: | |
| if any(key.startswith("commit_throughput_") for key in kwargs): | |
| raise ValueError("Removed commit-throughput configuration fields.") | |
| if token_ce_supervision != TOKEN_CE_SUPERVISION: | |
| raise ValueError("Schema25 requires valid-canvas token CE.") | |
| if state_schema_version != STATE_SCHEMA_VERSION: | |
| raise RuntimeError(CONFIG_PROTOCOL_ERROR) | |
| if training_scheme != TRAINING_SCHEME or memory_scheme != MEMORY_SCHEME: | |
| raise RuntimeError(CONFIG_PROTOCOL_ERROR) | |
| if memory_architecture != MEMORY_ARCHITECTURE: | |
| raise RuntimeError("Schema25 requires compact_gdn2_v2 memory; start a new run.") | |
| if text_config is None: | |
| text_config = ModilifyMk2TextConfig() | |
| elif isinstance(text_config, dict): | |
| text_config = dict(text_config) | |
| text_config.pop("model_type", None) | |
| text_config["use_bidirectional_attention"] = None | |
| text_config = ModilifyMk2TextConfig(**text_config) | |
| elif not isinstance(text_config, ModilifyMk2TextConfig): | |
| payload = text_config.to_dict() | |
| payload.pop("model_type", None) | |
| text_config = ModilifyMk2TextConfig(**payload) | |
| self.text_config = text_config | |
| self.canvas_length = canvas_length | |
| self.initializer_range = initializer_range | |
| self.state_schema_version = STATE_SCHEMA_VERSION | |
| self.training_scheme = training_scheme | |
| self.memory_scheme = memory_scheme | |
| self.memory_architecture = memory_architecture | |
| self.latent_dim = latent_dim | |
| self.latent_ffn_dim = latent_ffn_dim | |
| self.latent_memory_slots = latent_memory_slots | |
| self.latent_num_layers = latent_num_layers | |
| self.latent_num_heads = latent_num_heads | |
| self.latent_local_attention_window = latent_local_attention_window | |
| self.latent_history_length = latent_history_length | |
| self.latent_tape_probes = int(latent_tape_probes) | |
| self.latent_tape_scheme = str(latent_tape_scheme) | |
| self.latent_history_views = int(latent_history_views) | |
| if latent_history_kv_rank is None: | |
| rank = min(1024, latent_dim) | |
| rank -= rank % max(latent_num_heads, 1) | |
| if rank <= 0: | |
| rank = latent_num_heads | |
| self.latent_history_kv_rank = rank | |
| else: | |
| self.latent_history_kv_rank = latent_history_kv_rank | |
| self.latent_working_last_block_global = bool(latent_working_last_block_global) | |
| self.working_memory_bus = bool(working_memory_bus) | |
| self.persistent_memory_bus = bool(persistent_memory_bus) | |
| self.persistent_memory_write = str(persistent_memory_write) | |
| self.commit_sequence_layers = int(commit_sequence_layers) | |
| if commit_sequence_dim is None: | |
| self.commit_sequence_dim = self.latent_history_kv_rank | |
| else: | |
| self.commit_sequence_dim = int(commit_sequence_dim) | |
| self.writer_slot_gate = str(writer_slot_gate) | |
| self.latent_working_bus_unfreeze_steps = int(latent_working_bus_unfreeze_steps) | |
| self.latent_persistent_bus_unfreeze_steps = int( | |
| latent_persistent_bus_unfreeze_steps | |
| ) | |
| self.training_bptt_steps = training_bptt_steps | |
| self.kv_cache_bucket_size = kv_cache_bucket_size | |
| self.turn_end_token_id = turn_end_token_id | |
| if terminal_token_ids is None: | |
| self.terminal_token_ids = (int(turn_end_token_id),) | |
| else: | |
| self.terminal_token_ids = tuple(int(token_id) for token_id in terminal_token_ids) | |
| self.channel_end_token_id = int(channel_end_token_id) | |
| self.commit_failure_budget = float(commit_failure_budget) | |
| self.commit_top_k = int(commit_top_k) if commit_top_k is not None else None | |
| self.commit_min_p = float(commit_min_p) if commit_min_p is not None else None | |
| self.commit_target_confidence = float(commit_target_confidence) if commit_target_confidence is not None else None | |
| self.commit_entropy_weight = float(commit_entropy_weight) | |
| self.commit_confidence_power = float(commit_confidence_power) | |
| self.commit_gold_alpha = float(commit_gold_alpha) | |
| self.commit_gold_weight = float(commit_gold_weight) | |
| self.commit_readiness_failure_weight = float(commit_readiness_failure_weight) | |
| self.token_loss_weight = token_loss_weight | |
| self.token_ce_supervision = str(token_ce_supervision) | |
| self.token_ce_normalization = str(token_ce_normalization) | |
| self.confidence_calibration_loss_weight = confidence_calibration_loss_weight | |
| self.commit_readiness_objective = str(commit_readiness_objective) | |
| self.commit_readiness_target_tokens = int(commit_readiness_target_tokens) | |
| self.commit_readiness_loss_weight = float(commit_readiness_loss_weight) | |
| self.commit_readiness_budget_margin = float(commit_readiness_budget_margin) | |
| self.commit_readiness_beta = float(commit_readiness_beta) | |
| self.terminal_stop_loss_weight = terminal_stop_loss_weight | |
| self.terminal_stop_target_probability = terminal_stop_target_probability | |
| self.vocab_chunk_size = VOCAB_CHUNK_SIZE | |
| super().__init__( | |
| tie_word_embeddings=tie_word_embeddings, | |
| eos_token_id=eos_token_id, | |
| **kwargs, | |
| ) | |
| self._validate() | |
| def _validate(self) -> None: | |
| positive = ( | |
| self.canvas_length, self.latent_dim, self.latent_ffn_dim, | |
| self.latent_memory_slots, | |
| self.latent_num_layers, self.latent_num_heads, | |
| self.latent_local_attention_window, self.latent_history_length, | |
| self.latent_tape_probes, | |
| self.latent_history_kv_rank, | |
| self.commit_sequence_layers, self.commit_sequence_dim, | |
| self.training_bptt_steps, self.kv_cache_bucket_size, | |
| ) | |
| if any(value <= 0 for value in positive): | |
| raise ValueError("All schema25 dimensions and intervals must be positive.") | |
| if self.canvas_length != 256: | |
| raise ValueError("Schema25 requires a 256-token canvas.") | |
| if self.latent_tape_scheme != "gdn2_spatial_probe_v1": | |
| raise ValueError("Schema25 requires GDN2 spatial probes.") | |
| if self.latent_tape_probes > self.canvas_length: | |
| raise ValueError("Spatial probes cannot exceed canvas positions.") | |
| if self.commit_sequence_dim % self.latent_num_heads: | |
| raise ValueError("`commit_sequence_dim` must be divisible by `latent_num_heads`.") | |
| if self.latent_working_bus_unfreeze_steps < 0: | |
| raise ValueError("`latent_working_bus_unfreeze_steps` must be non-negative.") | |
| if self.latent_persistent_bus_unfreeze_steps < 0: | |
| raise ValueError( | |
| "`latent_persistent_bus_unfreeze_steps` must be non-negative." | |
| ) | |
| if self.latent_persistent_bus_unfreeze_steps < self.latent_working_bus_unfreeze_steps: | |
| raise ValueError( | |
| "Persistent bus must unfreeze no earlier than the working bus." | |
| ) | |
| if self.latent_history_kv_rank > self.latent_dim: | |
| raise ValueError("`latent_history_kv_rank` must not exceed `latent_dim`.") | |
| if self.latent_history_kv_rank % self.latent_num_heads: | |
| raise ValueError("`latent_history_kv_rank` must be divisible by `latent_num_heads`.") | |
| if not isinstance(self.eos_token_id, int) or self.eos_token_id < 0: | |
| raise ValueError("ModilifyMk2 requires one non-negative integer EOS token ID.") | |
| if not isinstance(self.channel_end_token_id, int) or self.channel_end_token_id < 0: | |
| raise ValueError("`channel_end_token_id` must be a non-negative integer.") | |
| if not self.terminal_token_ids: | |
| raise ValueError("`terminal_token_ids` must not be empty.") | |
| if any( | |
| not isinstance(token_id, int) or token_id < 0 | |
| for token_id in self.terminal_token_ids | |
| ): | |
| raise ValueError("`terminal_token_ids` must be non-negative integers.") | |
| if self.latent_dim % self.latent_num_heads: | |
| raise ValueError("`latent_dim` must be divisible by `latent_num_heads`.") | |
| if self.commit_readiness_objective != COMMIT_READINESS_OBJECTIVE: | |
| raise ValueError( | |
| "Unsupported commit-readiness objective: " | |
| f"{self.commit_readiness_objective!r}." | |
| ) | |
| import math | |
| if not all(math.isfinite(v) for v in ( | |
| self.commit_failure_budget, self.commit_entropy_weight, | |
| self.commit_confidence_power, self.commit_gold_alpha, self.commit_gold_weight, | |
| self.commit_readiness_failure_weight, self.commit_readiness_loss_weight, | |
| )): | |
| raise ValueError("Commit policy parameters must be finite.") | |
| if self.commit_failure_budget <= 0 or self.commit_entropy_weight < 0: | |
| raise ValueError("Commit budget must be positive and entropy weight non-negative.") | |
| if self.commit_top_k is not None and self.commit_top_k <= 0: | |
| raise ValueError("`commit_top_k` must be a positive integer.") | |
| if self.commit_min_p is not None and not 0.0 < self.commit_min_p < 1.0: | |
| raise ValueError("`commit_min_p` must be in (0, 1).") | |
| if self.commit_target_confidence is not None and not 0.0 < self.commit_target_confidence < 1.0: | |
| raise ValueError("`commit_target_confidence` must be in (0, 1).") | |
| if self.commit_confidence_power <= 0 or not 0 < self.commit_gold_alpha < 1: | |
| raise ValueError("Commit power must be positive and gold alpha in (0, 1).") | |
| if self.commit_gold_weight <= 0: | |
| raise ValueError("Commit gold weight must be positive.") | |
| if self.commit_readiness_failure_weight < 0: | |
| raise ValueError("Commit readiness failure weight must be non-negative.") | |
| if self.commit_readiness_target_tokens <= 0: | |
| raise ValueError("`commit_readiness_target_tokens` must be positive.") | |
| if self.commit_readiness_loss_weight < 0: | |
| raise ValueError("`commit_readiness_loss_weight` must be non-negative.") | |
| if not 0.0 <= self.commit_readiness_budget_margin < self.commit_failure_budget: | |
| raise ValueError( | |
| "`commit_readiness_budget_margin` must be in [0, commit_failure_budget)." | |
| ) | |
| if self.commit_readiness_beta <= 0: | |
| raise ValueError("`commit_readiness_beta` must be positive.") | |
| if self.terminal_stop_loss_weight < 0: | |
| raise ValueError("`terminal_stop_loss_weight` must be non-negative.") | |
| if not 0.0 < self.terminal_stop_target_probability < 1.0: | |
| raise ValueError("`terminal_stop_target_probability` must be in (0, 1).") | |
| loss_weights = ( | |
| self.token_loss_weight, | |
| self.confidence_calibration_loss_weight, | |
| self.commit_readiness_loss_weight, | |
| self.terminal_stop_loss_weight, | |
| ) | |
| if any(not math.isfinite(weight) or weight < 0 for weight in loss_weights): | |
| raise ValueError("Schema25 fixed loss weights must be finite and non-negative.") | |
| if self.token_ce_normalization != TOKEN_CE_NORMALIZATION: | |
| raise ValueError("Unsupported token CE normalization.") | |
| def from_dict(cls, config_dict: dict[str, Any], **kwargs: Any) -> "ModilifyMk2Config": | |
| return_unused_kwargs = kwargs.pop("return_unused_kwargs", False) | |
| payload = dict(config_dict) | |
| if (payload.get("state_schema_version") != STATE_SCHEMA_VERSION | |
| or payload.get("memory_architecture") != MEMORY_ARCHITECTURE): | |
| raise RuntimeError(CONFIG_PROTOCOL_ERROR) | |
| payload.pop("model_type", None) | |
| payload.pop("architectures", None) | |
| for key in tuple(kwargs): | |
| if key in payload: | |
| payload[key] = kwargs.pop(key) | |
| config = cls(**payload) | |
| for key in tuple(kwargs): | |
| if hasattr(config, key) or key == "name_or_path": | |
| setattr(config, key, kwargs.pop(key)) | |
| return (config, kwargs) if return_unused_kwargs else config | |
| __all__ = [ | |
| "ModilifyMk2Config", "ModilifyMk2TextConfig", "CONFIG_PROTOCOL_ERROR", | |
| "COMMIT_READINESS_OBJECTIVE", "COMMIT_SEQUENCE_LAYERS", "DENOISE_TEMPERATURE", | |
| "HISTORY_VIEWS", "MEMORY_SCHEME", "MEMORY_ARCHITECTURE", "STATE_SCHEMA_VERSION", | |
| "TRAINING_SCHEME", "VOCAB_CHUNK_SIZE", | |
| "TOKEN_CE_SUPERVISION", "TOKEN_CE_NORMALIZATION", | |
| "require_current_checkpoint_protocol", | |
| ] | |