Hvorfor NVIDIAs bibliotek blokerer tests på AMD-hardware
Nye multi-output-tests for backend-sampler kan ikke køre på HIP, så de springes over. Samtidig får CI-logge på ROCm-hardware nu en unik mappe per kørsel.
Læs i dit tempo
Kort
Nye tests i llama.cpp springes nu over på AMDs HIP-backend, fordi de kræver NVIDIAs CUB-bibliotek, som ikke er tilgængeligt der. Det betyder, at tests med top_k-sampling ellers ville fejle og blokere kørslener på AMD-hardware. Derudover gemmes testlogge nu i individuelle mapper, så data fra forskellige kørsler ikke længere overskrives og går tabt.
Begynder
Forestil dig, at du har en robot, der kan skrive tekst for dig. For at den bliver god til sit job, skal den testes. Men nogle af testene fungerer ikke, når robotten kører på en bestemt type hardware — altså bestemte computere. Her drejer det sig om computere fra AMD, som bruger en teknologi kaldet HIP. HIP er i bund og grund den måde, AMDs grafikkort taler sammen med software på. Det svarer lidt til, at NVIDIAs grafikkort bruger en anden »dialekt« kaldet CUDA. De to dialekter ligner hinanden, men er ikke identiske.
Nogle tests bruger en funktion, der hedder top_k-sampling. Det kan du tænke på som en måde at vælge det bedste svar på: Forestil dig, at du har ti forslag til et ord i en sætning, og du sorterer dem, så de ti bedste kommer øverst. Denne funktion kræver et bestemt hjælpeværktøj fra NVIDIAs side, som hedder CUB-biblioteket. Det bibliotek findes kun til NVIDIAs kort, ikke til AMDs. Når testene kører på AMD, mangler hjælpeværktøjet simpelthen, og resultaterne bliver tomme — som at prøve at sortere en bunke kort, der slet ikke ligger på bordet. Derfor bliver to specifikke under-tests nu sprunget over, når de kører på AMD. De slutter sig til en liste af tests, der allerede blev holdt uden for af samme grund.
Derudover er der løst et hverdagsproblem med logfiler — altså de optegnelser, der fortæller, hvad der skete under testene. Maskinerne hos projektet, der kører på AMDs grafikkort, kunne ikke sende deres logfiler op til cloud-lageret på grund af begrænsninger i netværket. Det betød, at logfilerne fra én testkørsel blev slettet af den næste, som når to personer skriver i samme notesbog, og den ene overskriver den andens noter. Løsningen er blevet at give hver testkørsel sin egen mappe, opkaldt efter kørselens unikke id. Så nu ligger logfilerne trygt for sig selv.
Ændringerne hører til release b10362. Det er i bund og grund teknisk vedligeholdelse — ikke nye features, men justeringer, der holder testene kørende og gør det nemmere at finde fejl, når softwaren kører på AMD-hardware.

Nye tests af multi-output-sampling i llama.cpp bliver nu sprunget over, når de kører på AMDs HIP-backend. Årsagen er, at testene bruger top_k-sampling, som kræver NVIDIAs CUB-bibliotek. Det bibliotek er ikke tilgængeligt på HIP, så sampled_probs forbliver null, og testen aborterer.
Det drejer sig om to specifikke under-tests: `multi_output_sampling_chain` og `multi_output_cpu`. De tilføjes begge til den eksisterende skip-liste for HIP, hvor lignende top_k-baserede tests allerede blev sprunget over.
Samtidig løses et praktisk problem på projektets selvhostede GPU-testere med ROCm. Disse maskiner kan ikke uploade logs til Azure Blob Storage på grund af netværksbegrænsninger. Logfilene fra én CI-kørsel blev derfor slettet af den næste. Nu gemmes logge i en undermappe, der er opkaldt efter GitHub Actions' kørsels-id, så hver testkørsel får sit eget logarkiv.
Ændringerne er en del af release b10362 og er teknisk vedligeholdelse, der holder testene kørende og gør det lettere at diagnosticere fejl på AMD-hardware.
Kilder
Produktionshistorie
- Radar Signal ? af 100 · spredning 1 kilder
- Vurdering Nyheds 5/5 — Teknisk opdatering til llama.cpp relevant for lokale modeller.
- Skrevet Model: mimo-v2.5-free · temperatur 0.4
- Overskrift 5 kandidater, valgt af chat.dk
- Korrektur 1 zen · 1 rettelser
- Korrektur 2 chatdk · 4 rettelser
- Vedtagelse ainews-auto-v3 · score 0.4378