Skip to content

Linux engine install fails on beta update (sglang-kernel hash mismatch, flashinfer version mismatch) and leaves no engine installed #554

Description

@sanjayjaras

What happened

Environment

  • FreeToken Desktop Beta 22 (AppImage, beta channel), Linux x86_64 (CachyOS)
  • Engine wheels: freetoken-0.1.3+gcc1f5c2c9, freetoken_kernel_cache-0.1.3+cu130.gcc1f5c2c9
  • Private uv: 0.12.16
  • GPU: RTX 3060, CUDA 13 driver

Summary

Updating to Beta 22 runs the bundled engine/install.sh. The install fails, and because the script starts with uv venv --clear, the previous working engine is already gone, so the app has no engine at all. This happened on an earlier beta update too. There are two separate bugs, plus the non-atomic install.

  1. sglang-kernel==0.4.5+cu130 hash mismatch

error: Failed to download sglang-kernel==0.4.5+cu130
cause: Hash mismatch for sglang-kernel==0.4.5+cu130
Expected: sha256:44cccc106239ab6f361e823e33885e5355c6776646c1c5c222bc5eb409d33c35
Computed: sha256:f482a5fdf287d85cfc9434eaa0faff757d6fee31272f1c3e4408bd79aef189b5
hint: sglang-kernel (v0.4.5+cu130) was included because freetoken[accel] (v0.1.3+gcc1f5c2c9) depends on sglang-kernel

Cause: https://docs.sglang.io/whl/cu130/sglang-kernel/ lists the same file twice, with the same URL but different hashes:

https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=44cccc10... (stale)
https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=f482a5fd... (actual file)

The file at that URL currently hashes to f482a5fd…. uv takes the first (stale) entry, so every install fails. PyPI has no 0.4.5+cu130 x86_64 file to fall back on. This probably needs reporting to sgl-project as well, but the installer could avoid it (see suggested fixes).

  1. flashinfer-cubin / flashinfer-jit-cache not pinned

install.sh installs flashinfer-cubin and flashinfer-jit-cache without version pins. uv resolves them to 0.7.0, but freetoken[accel] pulls in flashinfer-python==0.6.18.post1, so importing sgl_kernel/flashinfer fails:

RuntimeError: flashinfer-cubin version (0.7.0) does not match flashinfer version (0.6.18.post1).
Please install the same version of both packages.

flashinfer-jit-cache 0.7.0 also pulls in flashinfer-jit-cache-sm80/sm89/sm90a/sm100a/sm103a/sm120f==0.7.0, which are left behind after downgrading.

  1. Install isn't atomic

uv venv "$VENV" --clear runs before any download, so any network, index or resolution failure destroys a working engine.

Workaround I used

  1. Downloaded the sglang-kernel wheel directly, confirmed sha256 = f482a5fd…, and added the local file path to the uv pip install command.
  2. Pinned flashinfer-cubin==0.6.18.post1 and flashinfer-jit-cache==0.6.18.post1, then uninstalled the orphaned flashinfer-jit-cache-sm* 0.7.0 packages.

After that, ft --help works and import torch, sgl_kernel, flashinfer, freetoken succeeds on CUDA.

Suggested fixes

  • Pin flashinfer-cubin and flashinfer-jit-cache to the same version as flashinfer-python (in install.sh or as accel extra dependencies).
  • For sglang-kernel, depend on a direct URL with the correct hash (or bump to a version without a duplicate listing), and report the duplicate entry to sgl-project.
  • Build the new engine in a temp venv (e.g. $FT_HOME/venv.new) and swap it in only after ft --help passes, so a failed update keeps the old engine working.

Desktop app version

V0.2.0-beta 19

OS

Arch Linux

OS details

CachyOS

GPU and driver

GPU: RTX 3060, CUDA 13 driver

CPU and system RAM

Ryzen 3700x

Checkpoint

Ornith-1.5-35B-A3B-NVFP4

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Desktopproblem related to FreeToken DesktopbugSomething isn't workinglinux

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions