Tekoälyn päivälehti — mallit, työkalut ja hardware
Päivän Python-kirjasto · Koodi
Paketti antaa suoran ctypes-pääsyn llama.cpp:n C-rajapintaan, korkean tason täydennysrajapinnan ja OpenAI-yhteensopivan palvelimen. Sen erikoisuus ja sen ongelma ovat sama asia: PyPI:ssä on vain lähdekoodipaketti, joten asennus kääntää moottorin itse.
Kun paikallista mallia halutaan ajaa Pythonista, vaihtoehtoja on karkeasti kaksi: puhutaan HTTP:llä erilliselle palvelimelle, tai ladataan moottori samaan prosessiin. llama-cpp-python on jälkimmäisen vaihtoehdon vakiintunut toteutus llama.cpp:lle, ja siitä ilmestyi eilen aamupäivällä versio 0.3.35 — ensimmäinen julkaisu 12. heinäkuuta jälkeen.
Paketti on rakennettu kolmeksi kerrokseksi. Pohjalla on suora ctypes-sidonta llama.cpp:n C-rajapintaan, eli jokainen moottorin funktio on kutsuttavissa Pythonista sellaisenaan ilman välikäsiä. Sen päällä on korkean tason rajapinta tekstintäydennykseen ja keskusteluun, joka noudattaa OpenAI:n kutsumuotoa ja on siksi yhteensopiva LangChainin ja vastaavien runkojen kanssa. Ylimpänä on valmis verkkopalvelin, joka tarjoaa saman rajapinnan HTTP:n yli, jos sittenkin haluaa erillisen prosessin.
Paikalliseen ajoon paketti liittyy suorimmin mahdollisella tavalla: se on llama.cpp, vain Pythonista käsin. Kaikki, mitä moottori osaa — GGUF-tiedostot, kvantisoinnit, kieliopilla rajoitettu generointi, LoRA-adapterit, monimallisyys, avainarvovälimuistin hallinta — on periaatteessa saatavilla, koska sidonta on koko rajapinnan laajuinen. Taustaosista tuetaan samaa valikoimaa kuin moottorissakin: suoritin, CUDA, Metal, Vulkan, ROCm ja SYCL, ja valinta tehdään käännösaikaisilla CMake-argumenteilla.
Ja tässä on sekä paketin erikoisuus että sen tunnetuin kompastuskivi. PyPI:hin julkaistaan vain lähdekoodipaketti — 0.3.35:n tarball on 74,9 megatavua — eikä yhtään valmiiksi käännettyä pyöräkkeitä. Käytännössä pip install kääntää siis oman llama.cpp-käännöksensä paikan päällä, mikä vaatii kääntäjän ja kestää ensimmäisellä kerralla minuutteja. Jos haluat muun kuin suoritinkäännöksen, taustaosa valitaan ympäristömuuttujalla ennen asennusta, esimerkiksi CMAKE_ARGS-muuttujan arvolla -DGGML_CUDA=on tai -DGGML_VULKAN=on. Tuetut Python-versiot ulottuvat 3.8:sta 3.14:ään.
Julkaisutahdista kannattaa tietää yksi asia. Kesäkuussa versioita tuli seitsemän, heinäkuussa kaksi, ja sen jälkeen viisi viikkoa hiljaisuutta. Se on tavallista tälle paketille, mutta se tarkoittaa myös, että mukana kulkeva llama.cpp-käännös laahaa väistämättä jäljessä moottorin omasta julkaisutahdista, joka on tällä hetkellä useita käännöksiä päivässä. Aivan tuoreimman mallirakenteen tuki ei siis välttämättä ole paketissa, vaikka se olisi moottorissa.
Milloin tätä siis kannattaa käyttää ja milloin ei. Käytä, kun haluat mallin samaan prosessiin Python-koodisi kanssa, kun tarvitset matalan tason otetta välimuistiin tai näytteenottoon, tai kun rakennat työkalun, joka ei saa olettaa erillisen palvelimen olevan pystyssä. Älä käytä, jos ajat vain yhtä mallia ja puhut sille rajapinnan yli — silloin llama.cpp:n oma palvelin on tuoreempi, kevyempi asentaa ja päivittyy nopeammin. Suurin yksittäinen syy valita tämä on se, että koko C-rajapinta on käytettävissä Pythonista ilman että kirjoittaa itse yhtään sidontakoodia.