Repository navigation
Conversation
The image workflow now builds two variants from a matrix: the default (decisions only, no speech model) and an -asr variant built with WITH_ASR=1 so chat speech input works without extra setup. Tags are X.Y.Z and latest for the default, X.Y.Z-asr and latest-asr for the asr image, so the two never push the same tag. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Describe GRANITE_SWITCH_VERSION, WITH_ASR, ASR_MODEL and ASR_REVISION, and replace the 'no supported image is published' line with the ghcr image name and tags. The package is currently private, so the README says login is needed until it is made public. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
… startup The default image lacked av, scipy, soundfile and soxr, so with SYSTEMONE_SPEECH_INPUT=1 and a mounted speech model the server started and passed /health, then answered every audio request with HTTP 500 "Please install vllm[audio]". The image now installs granite-switch[audio] in every variant (WITH_ASR=1 still only adds the baked-in speech model), and the speech preflight names any missing audio library and stops before vllm starts, for installs outside the image. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Move the default ASR_REVISION to the multilingual TurboCTC release (English, French, German, Spanish, Portuguese, Italian and Japanese, with punctuation and capitalization). The README says how to build with the earlier English-only revision instead. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Reorder it so a reader gets a working server first: a quick start for the container, an existing vLLM install and Hugging Face Inference Endpoints, a first request, then securing it, speech input, configuration, behaviour and limits. Remove restated internal detail, keep every tested fact and command, and say plainly what has not been tried (Inference Endpoints). Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Each architecture builds on a native runner and pushes by digest. A second job joins the digests into the version tag (and latest) for both the default and the -asr image. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Standard library only. Sends spoken clips as input_audio and checks the reply repeats most of the words. Clips are made at run time with espeak-ng or macOS say, so no audio is stored here; --clip takes your own. Documented in docs/TESTING.md, and the stale quick-start anchor there is fixed. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
…eech check Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Confirmed from the manifest lists a workflow push run produced for both the default and -asr tags. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Pulled the pushed arm64 -asr image and served the public 8b with SYSTEMONE_SPEECH_INPUT=1; scripts/speech_check.py passed. Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
Comments and docstrings only. The plugin's code is identical (checked by comparing the AST with docstrings removed), the Dockerfile diff has no non-comment lines, and the suite passes (226 passed, 4 skipped). Assisted-by: Claude Code Signed-off-by: Nigel Jones <jonesn@uk.ibm.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Until now the release image was amd64-only, decisions-only, and could not take speech input without extra setup. The audio libraries were missing, so a server started with speech on would pass
/healthand then fail every audio request with HTTP 500. After this PR each release publishes two multi-arch images (amd64 and arm64), the audio libraries are in both, and the README is written for people deploying the plugin rather than for us.What changes for a user
ghcr.io/generative-computing/granite-switch-systemone:X.Y.Z(andlatest) is the decisions image.X.Y.Z-asr(andlatest-asr) also has the speech model baked in. Each tag is one manifest for linux/amd64 and linux/arm64.SYSTEMONE_SPEECH_INPUT=1, a missing audio library or speech model now stops the container at startup with a message that names the cause and the fix, instead of failing later.How
image.ymlbuilds each variant on a native runner per architecture (ubuntu-latest,ubuntu-24.04-arm), pushes by digest, and a second job joins the digests into the tags. A branch run pushes only<branch>and<branch>-asr.Dockerfileinstallsgranite-switch[audio]in every variant.ASR_REVISIONis now the multilingual release of the speech model, pinned by commit; the earlier English-only revision is one build argument away.preflight.pychecks forav,scipy,soundfileandsoxras well as the speech model.scripts/speech_check.pyis a standard-library check for speech input (clips are made at run time, none are committed).Checked
serve.shtests fail without the change and pass with it.actionlint,ruffand the SPDX header check pass.imagetools inspectshowslinux/amd64andlinux/arm64in both tags.-asrimage withdocker runon an NVIDIA GB10 (public 8b, speech on):speech_check.pypassed. The arm64 default image passede2e_check,probe_checkandaccuracy_check, with accuracy matching amd64 on the same checkpoint.speech_check.pyalso passed on amd64 (H100) with a mounted speech-model cache.-asrimage was not pulled and served, Hugging Face Inference Endpoints was not tried, and nothing was run under Docker on amd64.For a reviewer
feat-image-variants-and-build-argsandfeat-image-variants-and-build-args-asrare on ghcr and can be deleted after review.