Otwarty silnik do uruchamiania modeli

Modele decyzyjne Basal na twoim sprzęcie

Basal to modele, które czytają tekst i odpowiadają na pytania o niego, na przykład do którego działu skierować zgłoszenie. Tworzy je Remek Kinas. My, zespół IT SOL, rozwijamy basal-rs: otwarty silnik w Rust, czyli program, który uruchamia te modele na kartach NVIDIA i na Macach z Apple Silicon. Daje te same decyzje co obliczenia referencyjne autora modeli. Jest darmowy, na licencji Apache 2.0.

macOS brew install itsoltech/tap/basal-rs
Linux z kartą NVIDIA i Docker
POST /v1/systemone
state

Zgłoszenie: klient prosi o zwrot pieniędzy za uszkodzony telefon.

200 OK
dept choice Do którego działu skierować zgłoszenie?
Zwroty 0.94
Wsparcie techniczne 0.05
Sprzedaż 0.01
choice returns · confidence 0.91
urgent noul Czy sprawa jest pilna?
P(tak) 0.31
state

Komentarz pod artykułem: „Autor nie ma pojęcia, o czym pisze. Typowy dyletant.”

200 OK
tone score Jak ostry jest ton komentarza?
0 · neutralny 0.06
1 · krytyczny 0.71
2 · obraźliwy 0.23
score 1.17 · confidence 0.57
remove noul Czy komentarz narusza regulamin?
P(tak) 0.22
state

E-mail: „W załączniku przesyłam fakturę nr 14/10/2026 za serwis klimatyzacji. Termin płatności: 14 dni.”

200 OK
doc choice Jaki to dokument?
Faktura 0.97
Oferta 0.01
Reklamacja 0.01
Inne 0.01
choice invoice · confidence 0.96
approve noul Czy wymaga akceptacji płatności?
P(tak) 0.88
silnik: basal-rs model: basal-1.5-max · Remek Kinas

Ilustracja formatu odpowiedzi API. Wartości są przykładowe.

  • 900/900 decyzji takich samych jak w obliczeniach autora modeli w pełnej precyzji FP32 (basal-1.5-max, f16)
  • 0 różnic w odpowiedzi na to samo żądanie, także gdy serwer jest obciążony
  • 1,5–2,8× więcej żądań na tej samej karcie NVIDIA niż w serwerze autora modeli (upstream)
  • 1,07 GB cała instalacja na Linuksie razem z bibliotekami CUDA (środowisko Pythona serwera upstream: od 7,08 GB)
Jak zacząć

Od instalacji do pierwszej decyzji

Wybierz system, uruchom serwer i wyślij pierwsze pytanie. Na Macu i na Linuksie wystarczą dwa albo trzy polecenia.

terminal
brew install itsoltech/tap/basal-rsbasal doctor  # pokazuje, co jest na komputerze i czego brakujebasal serve  # http://127.0.0.1:8000

Wymaga Maca z Apple Silicon (sprawdzone na M1 Pro i M2 Max). Przy pierwszym starcie serwer pobiera model basal-1.5-4.5B. Aktualizacja: brew upgrade basal-rs.

Pierwsze żądanie

żądanie
curl --fail-with-body localhost:8000/v1/systemone \
  -H 'content-type: application/json' -d '{
  "model": "basal-1.5-4.5B",
  "state": "Zgłoszenie: klient prosi o zwrot pieniędzy za uszkodzony telefon.",
  "questions": {
    "dept": {"type": "choice", "instructions": "Do którego działu skierować zgłoszenie?",
             "criteria": {"returns": "Zwroty", "tech": "Wsparcie techniczne", "sales": "Sprzedaż"}},
    "urgent": {"type": "noul", "instructions": "Czy sprawa jest pilna?"}
  }
}'
odpowiedź, wartości przykładowe
{
  "model": "basal-1.5-4.5B",
  "answers": {
    "dept": {
      "type": "choice",
      "choice": "returns",
      "probabilities": {"returns": 0.94, "tech": 0.05, "sales": 0.01},
      "confidence": 0.91
    },
    "urgent": {"type": "noul", "noul": 0.31}
  }
}
Automatyzacje w terminalu

Decyzje w skryptach i potokach danych

basal client to program wiersza poleceń. Czyta dane ze standardowego wejścia (stdin) albo z pliku i zwraca decyzje modelu Basal. Wynik można zapisać w zmiennej Bash, przekazać do jq albo do kolejnego pliku JSONL. Z opcją --local model działa w samym kliencie: dane nie opuszczają komputera i nie trzeba uruchamiać serwera.

polecenie
cat zgloszenie.txt | basal client --local \
  --ask 'Czy zgłoszenie opisuje awarię blokującą pracę?' --value
wynik
0.9937360260087164

Treść zgloszenie.txt: „Po aktualizacji system nie uruchamia się i cały zespół nie może pracować.” Samo --ask zadaje pytanie tak/nie. --value wypisuje tylko prawdopodobieństwo odpowiedzi „tak”, które można od razu zapisać w zmiennej Bash albo użyć w warunku.

polecenie
department=$(basal client --local --state reklamacja.txt \
  --ask 'Do którego działu skierować zgłoszenie?' \
  --choice 'returns=Zwroty i reklamacje' \
  --choice 'support=Pomoc techniczna' \
  --choice 'sales=Pytania przed zakupem' \
  --choice 'other=Inna sprawa lub brak informacji' --value)
echo "$department"
wynik
returns

Treść reklamacja.txt: „Telefon przyszedł uszkodzony. Chcę zwrotu pieniędzy.” W każdym --choice klucz przed znakiem = jest wynikiem dla skryptu, a opis po nim objaśnia opcję modelowi. Pytanie typu choice zawsze kończy się jedną z podanych opcji.

polecenie
basal client --local --template routing.json \
  --state tickets.jsonl --input jsonl --state-pointer /text |
  jq -c '{id: .input.id, department: .response.answers.department.choice,
    urgent: (.response.answers.urgent.noul * 100 | round / 100)}'
wynik
{"id":101,"department":"returns","urgent":0.03}
{"id":102,"department":"support","urgent":0.02}
{"id":103,"department":"other","urgent":0.06}
{"id":104,"department":"other","urgent":0.98}

W pliku JSONL każda linia to osobny rekord JSON. Szablon routing.json zadaje o każdy rekord dwa pytania: o dział i o pilność. Pole .input zawiera cały rekord, więc ID nie ginie. Zgłoszenia 103 (pytanie o monitor przed zakupem) i 104 trafiły do other, bo szablon każe wybrać other, gdy brakuje informacji. Pełna odpowiedź podaje prawdopodobieństwo każdej opcji, więc takie przypadki wyłapie próg albo dokładniejszy opis kryteriów.

polecenie
cat app.log | basal client --local --input lines \
  --ask 'Czy wpis wskazuje utratę danych lub niedostępność usługi?' |
  jq -c '{p: (.response.answers.result.noul * 100 | round / 100), line: .input}'
wynik
{"p":0.01,"line":"10:02:11 INFO  api: GET /v1/orders 200 in 41 ms"}
{"p":0.03,"line":"10:02:13 WARN  cache: hit ratio dropped to 71%"}
{"p":0.87,"line":"10:02:19 ERROR db: primary unreachable, failing over to replica"}
{"p":0.86,"line":"10:02:24 ERROR storage: disk full, 312 uploads not saved"}
{"p":0.01,"line":"10:02:31 WARN  auth: 3 failed logins for one user"}
{"p":0.01,"line":"10:02:40 INFO  worker: job 8812 finished in 2.4 s"}
{"p":0.92,"line":"10:02:44 ERROR api: 503 for all /v1/payments requests"}

--input lines ocenia osobno każdą niepustą linię. Model ładuje się raz na cały strumień danych. Do alertów wystarczy dodać w jq select(.p >= próg). Próg ustala się według własnych zasad i sam nie gwarantuje trafności. Przy ciągłym strumieniu logów zamiast cat można użyć tail -F.

polecenie
basal client --local --template all-types.json \
  --state reklamacja.json --input json |
  jq -c 'def r: . * 100 | round / 100; .answers | {department: .department.choice,
    urgent: (.urgent.noul | r), severity: (.severity.score | r),
    tags: .tags.selected, action: .refund_action.action}'
wynik
{"department":"returns","urgent":0.02,"severity":2.11,"tags":["damage","refund","delivery"],"action":"approve"}

Jeden szablon zadaje pięć pytań o ten sam stan: choice (wybór jednej opcji), noul (tak/nie), score (średnia ważona poziomów od 0 do 3), multi (kilka opcji naraz) i act (wybór działania). Stan to obiekt z warunkami zwrotu i treścią reklamacji. act wybiera działanie o najmniejszym oczekiwanym koszcie według kosztów podanych w szablonie. Klient zwraca decyzję, ale jej nie wykonuje.

Wyniki pochodzą z uruchomienia na Macu z Apple Silicon (M1 Pro), z opcją --local i modelem basal-1.5-4.5B. Pliki wejściowe są w repozytorium basal-rs, w katalogu examples/client.

Lokalnie albo przez HTTP
Z opcją --local klient sam ładuje model, raz na całe wejście, i działa bez serwera. Bez tej opcji wysyła żądania do basal serve, do 256 naraz (--jobs).
Rekord wraca z odpowiedzią
W trybie strumieniowym każda linia wyniku zawiera pole .input z całym oryginalnym rekordem. ID i pozostałe pola nie giną.
Cztery formaty wejścia
text, json, lines i jsonl. Opcja --state-pointer wskazuje, które pole rekordu ma ocenić model.
Kody wyjścia dla skryptów
0, gdy wszystkie rekordy przeszły bez błędu, także przy odpowiedzi „nie”. 1 przy błędzie w rekordzie. 2 przy błędzie konfiguracji albo odczytu i zapisu danych.
Misja

Sami korzystamy z Basala. Silnik oddajemy wszystkim.

Używamy modeli Basal we własnych projektach. Potrzebowaliśmy silnika, który na zwykłej stacji roboczej odpowiada w kilkadziesiąt milisekund i daje te same decyzje co obliczenia referencyjne autora modeli. Napisaliśmy go w Rust.

Ten sam silnik udostępniamy za darmo, razem z kodem i wynikami pomiarów. Chcemy, żeby każdy, kto ma Maca z Apple Silicon albo kartę NVIDIA, mógł jak najlepiej wykorzystać swój sprzęt. Tak wspieramy rozwój polskiego AI i ułatwiamy korzystanie z polskich modeli.

  • 01

    Za darmo, bez rejestracji

    Licencja Apache 2.0 pozwala używać silnika także w celach komercyjnych, zmieniać go i wbudowywać we własne produkty.

  • 02

    Wszystko jawne

    Kod, raporty z pomiarów i dane pomiarowe są w publicznym repozytorium na GitHubie.

  • 03

    Decyzje liczysz u siebie

    Serwer działa na twoim komputerze i domyślnie przyjmuje połączenia tylko z niego (adres 127.0.0.1). Z internetu pobiera wagi modeli z Hugging Face.

  • 04

    Autor modeli zawsze podpisany

    Remka Kinasa jako autora modeli podajemy w README, w pliku NOTICE i na tej stronie.

Zalety

Na czym nam zależy

Silnik zmienia sposób wykonania obliczeń. Sam model zostaje bez zmian. Każdą obietnicę poniżej sprawdzamy pomiarem, a raporty z danymi są w publicznym repozytorium.

01 / Prostota

Dwa polecenia do działającego serwera

Jeden plik programu, bez Pythona i środowisk wirtualnych. basal doctor sprawdza komputer i podpowiada, czego brakuje i jak to naprawić. Na Linuksie cała instalacja z bibliotekami CUDA zajmuje 1,07 GB. Środowisko Pythona dla basal-serve, referencyjny serwer autora modeli napisany w Pythonie (PyTorch, na Macach MLX). zajmuje od 7,08 GB.

$ brew install itsoltech/tap/basal-rs
$ basal serve
Porównanie rozmiaru
02 / Wierność modelowi

900/900

Te same decyzje co u autora modeli

Autor oceniał modele w obliczeniach Liczby zapisane w 32 bitach, czyli pełna precyzja obliczeń.. basal-rs domyślnie liczy w Liczby zapisane w 16 bitach, o połowę mniej niż w FP32. i sumuje w f32. Na 900 pytaniach z dziewięciu zbiorów daje te same decyzje co obliczenia FP32 (basal-1.5-max, A100).

Raport zgodności
03 / Powtarzalność

0

różnic w odpowiedzi pod obciążeniem

To samo żądanie daje co do bitu tę samą odpowiedź, gdy przychodzi samo, w partii z innymi i przy 32 klientach naraz. Wynik decyzji nie zależy od tego, co serwer liczy w tej samej chwili.

Jak to działa
04 / Wydajność sprzętu

1,5–2,8×

więcej decyzji z tej samej karty

Porównanie z serwerem upstream w trybie fast: ta sama karta i ta sama klasa precyzji, czyli 16 bitów (f16 i BF16). Na jedną decyzję basal-rs zużywa przy tym 1,3–2,8 raza mniej energii.

Benchmarki
05 / Każdy użytkownik

Od MacBooka po serwer z H100

Działa na Macach z Apple Silicon i na kartach NVIDIA: A100, RTX 30xx i nowszych. Model ma trzy rozmiary. Pytania mogą być po polsku i po angielsku.

  • basal-1.5-mini ~3,2 GB
  • basal-1.5-4.5B ~9,5 GB
  • basal-1.5-max ~23 GB
06 / Dostęp

Decyzja w jednym żądaniu HTTP

Serwer obsługuje API TypeSafe System One i konwencje serwera upstream. Aplikacje napisane pod jedno z nich działają bez zmian. Jeden proces serwera może obsługiwać kilka modeli.

  • POST /v1/systemonekontrakt TypeSafe System One
  • POST /v1/basalkonwencje serwera upstream
  • GET /v1/modelslista dostępnych modeli
  • GET /metricsmetryki dla Prometheusa, opcjonalnie
Porównanie

Co z czym porównujemy

Szybkość basal-rs porównujemy z basal-serve v1.5.0, referencyjny serwer autora modeli napisany w Pythonie (PyTorch, na Macach MLX). Na kartach NVIDIA w trybie fast: BF16, torch.compile i CUDA graphs. w jego trybie fast. Oba silniki działają na tej samej karcie i liczą w 16 bitach. Decyzje obu porównujemy z jednym punktem odniesienia: obliczeniami w pełnej precyzji FP32, w których autor oceniał modele. Wyniki opisują silnik. Nie są oceną trafności modeli.

Szybkość porównujemy między basal-rs w f16 i upstream w BF16 na tej samej karcie. Decyzje obu silników porównujemy z obliczeniami FP32 w upstream.
nasz silnik, ustawienie domyślne

basal-rs, f16

wagi i wyniki pośrednie w f16, sumy w mnożeniu macierzy w f32

serwer autora modeli, tryb fast

upstream, BF16

PyTorch z torch.compile i CUDA graphs, na Macach MLX w bf16

899–900 / 900 decyzji takich jak w FP32
890–896 / 900 decyzji takich jak w FP32
punkt odniesienia dla jakości

upstream, FP32

Pełna precyzja, w której autor oceniał modele. Służy do porównania decyzji. Szybkości z nią nie porównujemy. Kto potrzebuje dokładnie FP32, ustawia w basal-rs dtype: f32 i dostaje 900 / 900.

Wydajność

Wyniki pomiarów na tych samych kartach

Wybrane pomiary basal-rs i serwera upstream na tych samych kartach graficznych i komputerach Mac. Wszystkie modele, karty i pomiary są na stronie z benchmarkami.

basal-1.5-max na RTX 6000 Ada Każdy wiersz ma własną skalę i jednostkę.
upstream v1.5.0, BF16 (fast) basal-rs, f16
Dane w tabeli
Pomiarupstream v1.5.0, BF16 (fast)basal-rs, f16Jednostka
Pojedyncza decyzja, mediana90,763,4–64,0ms (mniej = lepiej)
Jedno pytanie przez HTTP, mediana (p50)11872ms (mniej = lepiej)
32 klientów naraz6,821,8żądań/s (więcej = lepiej)
Ruch mieszany, 32 klientów17119żądań/min (więcej = lepiej)
Dokument 16 tys. tokenów, 5 pytań112,25,3s (mniej = lepiej)

Upstream działał na tej samej karcie w swoim najszybszym trybie (fast). Limit mocy karty: 250 W, a przy dokumencie 16 tys. tokenów 300 W. Token to fragment tekstu: model czyta dane wejściowe jako ciąg tokenów.

Wszystkie benchmarki Trzy modele na każdej karcie, czasy odpowiedzi p50 i p99 (mediana i czas, w którym mieści się 99% odpowiedzi), ruch mieszany, długie dokumenty i pytania z wieloma opcjami.
Architektura

Jak to działa?

basal-rs przyjmuje żądanie HTTP, buduje prompty według protokołu Basala, liczy je na karcie graficznej albo na Macu i zwraca rozkład prawdopodobieństwa dla opcji. Kolor numeru pokazuje, czyj kod za nim stoi.

silnik basal-rs protokół i modele Basal · Remek Kinas
01 Sześć etapów żądania
Przyjęcie żądania, walidacja i plan, kolejka, partia, przebieg modelu na GPU, decyzja i odpowiedź.
02 Protokół autora modeli
Każde pytanie trafia do modelu dwa razy, z opcjami w dwóch porządkach, a wynik jest uśredniany i kalibrowany. basal-rs odtwarza protokół Remka Kinasa bez zmian.
03 Wspólny dokument liczony raz
Pytania o ten sam dokument mają wspólny początek promptu, więc silnik liczy go tylko raz.
04 Krótkie żądania nie czekają na długie
Żądania powyżej 4096 tokenów trafiają do osobnego toru, więc krótkie pytania nie czekają za długimi dokumentami.
05 Ta sama odpowiedź niezależnie od ruchu
Wynik pytania nie zależy od tego, z jakimi innymi żądaniami trafi do obliczeń.
06 CUDA i Metal, bez Pythona
Własne kernele na kartach NVIDIA i Macach z Apple Silicon, domyślnie w precyzji f16.
Pytania

Częste pytania

Tak. Silnik jest na licencji Apache 2.0, która pozwala też na zastosowania komercyjne. Autor modeli Basal również wydał je na licencji Apache 2.0. Nie trzeba zakładać konta ani mieć klucza API. Nie ma limitów.

Modele Basal i ich autor, Remek Kinas. basal-rs odtwarza jego protokół decyzji: ten sam prompt, te same tokeny (token IDs), obie kolejności opcji i tę samą kalibrację. Nasze pomiary opisują szybkość silnika i zgodność z obliczeniami referencyjnymi upstream. Nie są oceną trafności samych modeli.

f16 to zapis liczb w 16 bitach, a FP32 w 32 bitach, czyli w pełnej precyzji. Punktem odniesienia są obliczenia FP32, w których autor oceniał modele. basal-rs domyślnie liczy w f16, z sumowaniem w f32, i daje te same decyzje co FP32 w 899–900 z 900 pytań. Jedyne różnice dotyczą pytań, w których FP32 daje niemal remis, np. 0,503 wobec 0,497. Serwer upstream w trybie fast liczy w BF16, innym formacie 16-bitowym, i ma 890–896 z 900. Szybkość porównujemy właśnie z tym trybem, czyli 16 bitów z 16 bitami. Kto potrzebuje dokładnie FP32, ustawia dtype: f32.

Maca z Apple Silicon albo komputera z Linuksem x86_64 i kartą NVIDIA z compute capability 8.0 lub wyższym (A100, RTX 30xx i nowsze). Potrzebna pamięć karty graficznej (GPU) to wagi modeli plus aktywacje, czyli wyniki pośrednie obliczeń: basal-1.5-mini ~3,2 GB, 4.5B ~9,5 GB, max ~23 GB.

Tak. POST /v1/systemone działa według kontraktu TypeSafe System One, łącznie z jego statusami błędów. POST /v1/basal działa według konwencji serwera upstream v1.5.0. Aplikacja nie musi wiedzieć, że po drugiej stronie działa basal-rs.

Protokół decyzji jest ten sam. Różni się sposób wykonania obliczeń. basal-rs układa prompty w drzewo wspólnych początków (prefiksów), więc wspólny stan liczy tylko raz. Ma własny kod GPU dla CUDA i Metal oraz harmonogram, który przepuszcza krótkie żądania przed długimi. Do działania nie potrzebuje Pythona.

Serwer nie sprawdza, kto wysyła żądania, bo nie ma uwierzytelniania. Domyślnie przyjmuje połączenia tylko z tego samego komputera (127.0.0.1). Adres 0.0.0.0 przyjmuje połączenia z sieci i jest używany także w obrazie Docker. Jest przeznaczony dla zaufanej sieci albo do pracy za proxy, które uwierzytelnia żądania.

Roadmapa

Co działa i co dalej

Wersja 1.0.0 ma dopracować pojedynczy serwer: obsługiwane systemy, karty, wydajność i integracje. Później silnik ma obsługiwać wiele kart i maszyn naraz. Wydania i listy zmian publikujemy na GitHubie. Do pracy nad każdym z punktów zapraszamy przez zgłoszenia i pull requesty.

Wydane (0.1.x)

  • Karty NVIDIA (CUDA) i Apple Silicon (Metal) Kod GPU dla kart NVIDIA z compute capability 8.0, 8.9 i 9.0 w jednym pliku programu oraz dla Apple Silicon.
  • Modele basal-1.5 i basal-1.0 basal-1.5 mini, 4.5B i max z rozszerzeniami multi, act, facts i evidence oraz basal-1.0-4.5B.
  • Instalacja jednym poleceniem Homebrew, skrypt install.sh, obraz Docker, basal doctor i basal update.
  • Metryki dla Prometheusa Liczba żądań, czasy odpowiedzi, kolejka i partie, osobno dla każdego modelu.

1.0.0

  • Wszystkie modele Basal Wersje 1.0, 1.5, 1.8 i 2.0. Dojdzie basal-1.0-1.5B. basal-1.8 i 2.0 autor zapowiedział, a obsługa pojawi się po publikacji ich wag.
  • Windows Serwer i narzędzie wiersza poleceń (CLI) na Windows z kartami NVIDIA, obok Linuksa i macOS.
  • Klient do automatyzacji w Bash basal client: pytanie wpisane w wierszu poleceń, dane ze stdin albo z pliku JSONL, równoległe żądania i lokalny model bez uruchamiania serwera. Przykłady użycia
  • Wydajność Krótsze czasy tam, gdzie upstream jest obecnie szybszy: pojedyncza decyzja i stany do ok. 2 tys. tokenów na H100.
  • Więcej kart graficznych Kod GPU i pomiary dla kolejnych generacji kart NVIDIA, poza obecnie obsługiwanymi compute capability 8.0, 8.9 i 9.0.
  • Więcej testów Szersze testy zgodności decyzji z referencją i testy serwera pod obciążeniem.
  • Klienci API i SDK Biblioteki do wywoływania serwera z kodu aplikacji, bez ręcznego składania żądań HTTP.

Po 1.0.0

  • Klastry kart Kilka kart GPU obsługuje wspólną kolejkę żądań i wspólny zestaw modeli.
  • Obliczenia na wielu serwerach Serwery łączą się ze sobą i rozdzielają między siebie żądania.
  • Zarządzanie klastrem i wdrożeniami Dodawanie maszyn i wdrażanie nowych wersji modeli z jednego miejsca.
  • Panel administratora Stan maszyn, modeli i kolejek w przeglądarce.
  • Szyfrowane połączenia (mTLS) Szyfrowane i wzajemnie uwierzytelnione połączenia między klientami, serwerami i węzłami klastra.
Odpowiedzialność

Kto za co odpowiada

basal-rs uruchamia modele, ale ich nie tworzy. Decyzje podejmują modele Basal, a za ich jakość odpowiada autor modeli, Remek Kinas. Silnik basal-rs odpowiada za szybkość i sposób wykonania obliczeń.

odpowiada Ty

Twoja aplikacja

Wysyła przez HTTP stan, czyli tekst lub dane do oceny, i pytania o niego. Dostaje decyzje z prawdopodobieństwami.

odpowiada IT SOL

basal-rs

Silnik i serwer w Rust, które uruchamiają modele. Odpowiadamy za to, jak szybko i jak przewidywalnie liczą się decyzje.

  • obliczenia na GPU w CUDA (karty NVIDIA) i Metal (Apple Silicon)
  • wspólne początki promptów liczone tylko raz (drzewo prefiksów)
  • kolejność obsługi żądań i łączenie ich w partie na GPU
  • API TypeSafe System One i endpoint zgodny z serwerem upstream
  • instalator, obraz Docker i metryki
  • publiczne pomiary szybkości i zgodności decyzji
odpowiada Remek Kinas

Basal

Modele decyzyjne. To one podejmują decyzje i od nich zależy jakość odpowiedzi.

  • modele basal-1.5: mini, 4.5B i max
  • trening modeli i ich wagi, czyli wyuczone parametry
  • protokół decyzji: prompt, odczyt odpowiedzi z liter opcji, opcje w dwóch kolejnościach
  • kalibracja prawdopodobieństw
  • referencyjny serwer basal-serve w Pythonie, dalej nazywany upstream
odpowiada SpeakLeash

Bielik v3.0

Polskie modele bazowe (1.5B, 4.5B, 11B Instruct). Modele Basal powstały przez ich dostrojenie.

Kontakt

Napisz do nas

basal-rs jest otwartym projektem i zapraszamy do jego rozwoju. Czekamy na uwagi, pomysły, zgłoszenia problemów i pull requesty, po polsku albo po angielsku.

  • Błędy i pomysły

    Różnice wobec upstream, problemy z wydajnością, obsługa nowych kart. Zgłoszenia przez formularz na GitHubie, także po polsku.

    Otwórz zgłoszenie
  • Pull requesty

    Poprawki kodu i dokumentacji, nowe karty, wydajność. Przy większej zmianie najpierw zgłoszenie, żeby uzgodnić podejście i sposób pomiaru.

    Jak pomóc w rozwoju
  • Pytania

    Jak dobrać model, kartę albo konfigurację serwera.

    GitHub Discussions
  • Luki bezpieczeństwa

    Prosimy nie zgłaszać ich publicznie. Zgłoszenie prywatne: przez GitHub Security Advisories albo na dev@itsol.tech.

    Zgłoś prywatnie