Uruchom polski model AI w chmurze AWS — Bielik 11B na Amazon Bedrock

Bielik 11B na Bedrocku — polski model AI jako serwis AWS, bez własnej infrastruktury GPU. Krok po kroku: od zero do działającego API w ~50 minut i ~$1.

Uruchom polski model AI w chmurze AWS — Bielik 11B na Amazon Bedrock
📋 Spis treści

Amazon Bedrock — po co to komu?

Jeśli chcesz używać modeli językowych w swojej aplikacji lub infrastrukturze AWS, masz kilka opcji. Możesz postawić własny serwer z GPU, zarządzać nim, aktualizować sterowniki, skalować ręcznie i co miesiąc płacić za idle. Albo możesz użyć Amazon Bedrock.

Bedrock to w skrócie: zarządzany dostęp do modeli AI przez API, bez własnej infrastruktury. Nie kupujesz instancji GPU, nie instalujesz CUDA, nie zarządzasz kontenerami. Wysyłasz zapytanie, dostajesz odpowiedź, płacisz za to co faktycznie zużyłeś.

W katalogu Bedrock znajdziesz modele od Anthropic (Claude), Meta (Llama), Mistral i innych. Ale co jeśli chcesz użyć modelu spoza katalogu — własnego, dostosowanego, albo takiego którego AWS po prostu nie oferuje?

Tu wchodzi funkcja Custom Model Import — możliwość importu własnych wag modelu bezpośrednio do Bedrocka. Po imporcie model zachowuje się jak każdy inny w Bedrock: masz API, logi w CloudWatch, IAM do kontroli dostępu. Żadnej własnej infrastruktury.


Bielik — polski model, który naprawdę mówi po polsku

Większość dostępnych modeli językowych jest trenowana głównie na danych angielskojęzycznych. Rozumieją polski, ale traktują go jako język drugiej kategorii — odpowiedzi bywają poprawne, ale brak w nich naturalności, kontekstu kulturowego i precyzji której oczekujemy w języku ojczystym.

Bielik to model językowy tworzony przez polską społeczność SpeakLeash — w całości na polskich danych, przez Polaków, dla Polaków. Wersja której używamy — Bielik-11B-v3.0-Instruct — to model 11 miliardów parametrów zoptymalizowany do zadań instruktażowych: odpowiadania na pytania, pisania, analizy tekstu.

Dlaczego akurat Bielik:

  • trenowany na polskim — rozumie niuanse języka, idiomy, kontekst kulturowy
  • 11B parametrów — dobry balans między jakością a kosztem inference
  • licencja Apache 2.0 — możesz użyć komercyjnie, bez opłat licencyjnych
  • open source — wagi dostępne na HuggingFace, pełna transparentność

Połączenie Bielika z Bedrockiem daje coś konkretnego: polski model AI jako serwis AWS, dostępny przez standardowe API, z pełną integracją z resztą infrastruktury.


Instalacja — krok po kroku

Cały proces zajmuje ~35–55 minut i nie wymaga instalowania czegokolwiek lokalnie. Poniżej każdy krok z wyjaśnieniem dlaczego tak, a nie inaczej.

Co potrzebujesz

  • Konto AWS z uprawnieniami do: CloudFormation, S3, IAM, CodeBuild, Bedrock, SSM
  • Konto na HuggingFace (darmowe)
  • Obsługiwany region: eu-central-1, us-east-1, us-east-2 lub us-west-2

Krok 1 — Zaakceptuj warunki modelu na HuggingFace

Model Bielik jest gated — wymaga jednorazowej akceptacji warunków zanim cokolwiek pobierzesz.

👉 https://huggingface.co/speakleash/Bielik-11B-v3.0-Instruct

Kliknij “Agree and access repository”. Bez tego kroku nawet poprawny token HuggingFace nie wystarczy — pobieranie skończy się błędem 403.


Krok 2 — Wygeneruj token HuggingFace

Token z uprawnieniem read potrzebny jest do pobrania plików modelu.

👉 https://huggingface.co/settings/tokens

“New token” → typ: read → skopiuj. Token zaczyna się od hf_.


Krok 3 — Otwórz AWS CloudShell i uruchom deploy

Otwórz AWS CloudShell i wklej:

bash <(curl -fsSL https://raw.githubusercontent.com/donkoyote/bielik-bedrock-import/main/deploy.sh)

Skrypt zapyta o token — resztą zajmie się sam.

Dlaczego CloudShell? CloudShell to terminal w przeglądarce z wbudowanym AWS CLI, Pythonem i credentialami konta. Nie instalujesz nic lokalnie, nie konfigurujesz aws configure. Otwierasz, wklejasz, działa.


Co robi skrypt — bez magii

Skrypt to zwykły bash — możesz go przeczytać w całości na GitHubie. Oto co robi kolejno:

Tworzy infrastrukturę przez CloudFormation:

ZasóbPo co
S3 Bucketprzechowuje pliki modelu (~22 GB)
IAM Role CodeBuilduprawnienia do HuggingFace, S3 i Bedrock API
IAM Role Bedrocktylko read S3 — przekazywana do Bedrocka przy imporcie
SSM Parameterbezpieczne przechowywanie tokenu HF (nie w env, nie w logach)
CodeBuild Projectmaszyna która pobiera model i importuje go

Dwie osobne role IAM to świadoma decyzja — Bedrock dostaje tylko to czego potrzebuje.

Uruchamia CodeBuild, który:

  1. Pobiera ~22 GB wag modelu z HuggingFace
  2. Wgrywa je do S3
  3. Weryfikuje czy wszystkie pliki .safetensors dotarły
  4. Wywołuje bedrock.create_model_import_job i czeka na zakończenie

Dlaczego CodeBuild, a nie Lambda czy lokalnie? Model waży 22 GB, pobieranie zajmuje 20–35 minut. Lambda ma limit 15 minut i 512 MB dysku. CloudShell ma 1 GB. CodeBuild daje tyle miejsca i czasu ile potrzeba, a płacimy tylko za czas buildu (~$0.90 za jednorazowy deploy).


Krok 4 — Poczekaj ~35–55 minut

Możesz śledzić logi na żywo:

aws logs tail /aws/codebuild/LIAC-Bielik-Import --follow --region eu-central-1

Po zakończeniu:

aws bedrock list-imported-models --region eu-central-1

Krok 5 — Pierwsze zapytanie

⚠️ Custom Imported Models nie obsługują converse API — używamy invoke_model.

import boto3, json

bedrock = boto3.client("bedrock",         region_name="eu-central-1")
runtime = boto3.client("bedrock-runtime", region_name="eu-central-1")

models    = bedrock.list_imported_models()
model_arn = next(
    m["modelArn"] for m in models["modelSummaries"]
    if "Bielik" in m["modelName"]
)

prompt = (
    "<|begin_of_text|>"
    "<|start_header_id|>user<|end_header_id|>\n"
    "Podaj dotychczasowe miasta, będące stolicą Polski.<|eot_id|>\n"
    "<|start_header_id|>assistant<|end_header_id|>\n"
)

response = runtime.invoke_model(
    modelId=model_arn,
    contentType="application/json",
    accept="application/json",
    body=json.dumps({"prompt": prompt, "max_gen_len": 512, "temperature": 0.7})
)

print(json.loads(response["body"].read())["generation"])

Poprawna odpowiedź powinna wymienić Gniezno, Kraków i Warszawę. Jeśli model odpowiada płynnie po polsku — działa. ✅


Cleanup

Jeden command usuwa wszystko:

bash <(curl -fsSL https://raw.githubusercontent.com/donkoyote/bielik-bedrock-import/main/cleanup.sh)

Usuwa kolejno: pliki z S3, logi CloudWatch, cały stack CloudFormation (IAM, SSM, CodeBuild) i opcjonalnie model z Bedrocka. Po cleanup żadnych zasobów, żadnych kosztów.


Koszty — eu-central-1

ScenariuszKoszt
Jednorazowy deploy~$0.96
S3 storage miesięcznie~$0.54
Kilka zapytań testowych~$0.02–$0.10
Produkcja light (~100 req/dzień)~$15–$20/mies

Import modelu jest bezpłatny. Płacisz tylko za inference — i tylko wtedy gdy model faktycznie odpowiada na zapytania (okna 5-minutowe). Model zaimportowany ale nieużywany nie generuje kosztów.

Chcesz tylko przetestować? Całość zamknie się w granicach $1–2.


Podsumowanie

Amazon Bedrock + Bielik to połączenie które daje polskim deweloperom coś konkretnego: natywnie polskojęzyczny model AI dostępny przez standardowe AWS API, bez zarządzania infrastrukturą, z pełną integracją z IAM i CloudWatch.

Jeden command, zero lokalnej konfiguracji, ~$1 na start.

bash <(curl -fsSL https://raw.githubusercontent.com/donkoyote/bielik-bedrock-import/main/deploy.sh)

📦 Pełne repozytorium z kodem, FAQ i opisem błędów: github.com/donkoyote/bielik-bedrock-import


Tutorial wideo: youtube.com/@livinginacloud

← Wróć do Receptury