Download python/voicemem_jev/studio_adapter.py from Sorbett/VoiceMem-Jev: direct link, hf CLI and curl.
- Browser
- Download file 2.53 kB
-
https://huggingface.co/Sorbett/VoiceMem-Jev/resolve/main/python/voicemem_jev/studio_adapter.py
- Command line
-
hf download hf://Sorbett/VoiceMem-Jev/python/voicemem_jev/studio_adapter.py
-
curl -L -o studio_adapter.py https://huggingface.co/Sorbett/VoiceMem-Jev/resolve/main/python/voicemem_jev/studio_adapter.py
2.53 kB
| """Expose VoiceMem-Jev through Studio's routing lifecycle.""" | |
| from .cuda_runtime import BUCKETS, CompiledCudaRouter | |
| from .adapter import VoiceDepthRouter | |
| class CompiledVoiceDepthRouter(VoiceDepthRouter): | |
| """Keep host cancellation, caching and GPU admission around compiled calls.""" | |
| def _load(self): | |
| import torch | |
| from voicemem.engine import cpu_thread_budget | |
| threads = cpu_thread_budget() | |
| if torch.get_num_threads() != threads: | |
| torch.set_num_threads(threads) | |
| print(f'[jev] Torch CPU thread budget fixed before compilation: {threads}', flush=True) | |
| runtime = CompiledCudaRouter(self.path, device=self.device) | |
| runtime._load() | |
| self._model, self._tokenizer = runtime.model, runtime.tokenizer | |
| with torch.inference_mode(): | |
| for bucket in BUCKETS: | |
| ids = torch.full((2, bucket), self._tokenizer.pad_token_id, | |
| dtype=torch.long, device=self.device) | |
| ids[:, 0] = self._tokenizer.cls_token_id | |
| ids[:, -1] = self._tokenizer.sep_token_id | |
| mask = torch.ones_like(ids) | |
| observed = torch.zeros((1, 7), dtype=torch.float32, device=self.device) | |
| for _ in range(3): | |
| self._model(ids, mask, observed).float().cpu().numpy().copy() | |
| if self._model.execution_mode == 'compiled-cuda': | |
| print('[jev] VoiceMem-Jev: compiled CUDA runtime ready; all five buckets warm', flush=True) | |
| else: | |
| print('[jev] VoiceMem-Jev: same-weight eager CUDA fallback ready', flush=True) | |
| def create(*, model, base_url='', api_key='', options=None): | |
| """Select the existing eager/ONNX adapter or opt into compiled CUDA.""" | |
| options = dict(options or {}) | |
| compiled = options.pop('compiled', False) | |
| if type(compiled) is not bool: | |
| raise ValueError('compiled must be a boolean') | |
| if compiled and (options.get('backend', 'onnx') != 'eager' | |
| or not str(options.get('device', 'cpu')).startswith('cuda')): | |
| raise ValueError('Compiled inference requires eager CUDA') | |
| from .adapter import create as ordinary | |
| adapter = ordinary(model=model, base_url=base_url, api_key=api_key, options=options) | |
| if not compiled: | |
| return adapter | |
| if adapter.backend != 'eager' or not adapter.device.startswith('cuda'): | |
| raise ValueError('Compiled inference requires eager CUDA') | |
| return CompiledVoiceDepthRouter(model, **options) | |