Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds
Powrót do kolekcji
Przewodnik11 min czytania

Hugging Face, modele otwarte i Inference API

Hugging Face to repozytorium modeli, biblioteki i API do inferencji. Hub, Transformers, Inference Providers, Spaces, cennik i licencje modeli otwartych.

Hugging Face, gdzie mieszkają otwarte modele

Hugging Face to trzy rzeczy naraz: repozytorium z setkami tysięcy modeli i zbiorów danych, zestaw bibliotek do pracy z nimi oraz usługa uruchamiająca modele bez własnego sprzętu. Dla większości zespołów pierwszy kontakt wygląda tak samo: szukają modelu do konkretnego zadania i trafiają na Hub.

Z czego się to składa

Hub przechowuje modele, zbiory danych i demonstracje. Działa na gicie, więc model to repozytorium z historią zmian, kartą opisującą jego zastosowanie i plikami wag. Możesz go sklonować, przejrzeć i uruchomić lokalnie.

Biblioteki to warstwa kodu. Transformers ładuje modele językowe i obrazowe jednym wywołaniem, Datasets pobiera i przetwarza zbiory danych, Sentence Transformers liczy embeddingi, a Diffusers obsługuje generowanie obrazów.

Inference Providers uruchamia modele przez API bez stawiania czegokolwiek. Żądanie trafia do jednego z partnerów obliczeniowych, a rozliczenie idzie po stawkach dostawcy, bez narzutu Hugging Face.

Spaces to hosting demonstracji. Aplikacja w Gradio albo Streamlit dostaje adres i działa w przeglądarce, co jest najszybszym sposobem, żeby pokazać model komuś, kto nie odpali notebooka.

Hub i karta modelu

Wyszukiwarka Hubu filtruje po zadaniu, języku, licencji i rozmiarze. To ostatnie kryterium bywa pomijane, a decyduje o tym, czy model w ogóle uruchomisz na posiadanym sprzęcie.

Karta modelu jest najważniejszym dokumentem i warto ją czytać przed pobraniem wag. Znajdziesz tam zamierzone zastosowanie, dane treningowe, znane ograniczenia i licencję. Model radzący sobie świetnie z angielskim potrafi zawodzić na polskim, a taki wytrenowany na tekstach z jednej dziedziny źle generalizuje na inną.

Osobno sprawdzaj format wag. Preferuj safetensors, ponieważ starszy format oparty na mechanizmie serializacji Pythona potrafi wykonać kod przy wczytywaniu pliku. To realna droga ataku, a nie teoretyczna, więc pobieranie wag z nieznanego konta bez sprawdzenia formatu jest ryzykiem.

Nazewnictwo modeli też niesie informację, choć nie jest znormalizowane. Człon w rodzaju base, large czy liczba parametrów mówi o rozmiarze, końcówka instruct oznacza wariant dostrojony do wykonywania poleceń, a chat do prowadzenia rozmowy. Model bez tych oznaczeń jest zwykle bazowy, czyli przewiduje dalszy ciąg tekstu, i użyty jak asystent zachowa się nieoczekiwanie. To częsta przyczyna wrażenia, że model jest słaby, choć po prostu wybrano niewłaściwy wariant.

Warto też patrzeć na liczbę pobrań i datę ostatniej aktualizacji. Model bez ruchu od dwóch lat zwykle ma nowszy odpowiednik, a różnica w jakości bywa duża.

Transformers w praktyce

Do prostych zadań wystarczy potok, który sam dobiera tokenizer i konfigurację.

Code
Bash
pip install transformers torch
Code
Python
from transformers import pipeline

klasyfikator = pipeline(
    "text-classification",
    model="cardiffnlp/twitter-xlm-roberta-base-sentiment"
)

print(klasyfikator("Zamowienie przyszlo dwa dni po terminie, ale produkt jest dobry"))

Przy pierwszym uruchomieniu biblioteka pobiera wagi i zapisuje je w pamięci podręcznej, domyślnie w katalogu domowym. Na maszynie budującej obrazy kontenerów warto ustawić tę ścieżkę świadomie, bo inaczej każdy build pobiera model od nowa.

Do embeddingów sięgasz po Sentence Transformers, bibliotekę stojącą na tej samej warstwie, ale sprowadzającą osadzanie do jednego wywołania zamiast ręcznego tokenizowania i uśredniania wyjścia modelu.

Code
Python
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("intfloat/multilingual-e5-base")
wektory = model.encode(["pierwszy fragment", "drugi fragment"])

Model wielojęzyczny w rozmiarze podstawowym daje dobre wyniki dla polskiego i zmieści się na przeciętnej karcie graficznej, a nawet na procesorze przy niewielkim wolumenie. Wektory zapisujesz potem w bazie takiej jak Pinecone albo pgvector.

Inference Providers bez własnego GPU

Jeśli nie chcesz utrzymywać sprzętu, wywołujesz model przez API. Żądanie jest kierowane do jednego z partnerów, a Ty płacisz jego stawkę.

Code
Python
from huggingface_hub import InferenceClient

client = InferenceClient(api_key=os.environ["HF_TOKEN"])

odpowiedz = client.chat_completion(
    model="meta-llama/Llama-3.3-70B-Instruct",
    messages=[{"role": "user", "content": "Streszcz ponizszy tekst w trzech zdaniach: ..."}]
)

Interfejs jest zgodny z konwencją znaną z OpenAI, więc podmiana dostawcy w istniejącym kodzie sprowadza się zwykle do zmiany adresu bazowego i klucza. To ułatwia porównanie modelu otwartego z zamkniętym na własnych danych, zanim podejmiesz decyzję.

Każde konto dostaje miesięczną pulę kredytów na próby. Plan Pro podnosi ją wyraźnie, a organizacje na planach zespołowych dzielą pulę między członków i mogą rozliczać wszystkie żądania centralnie, mimo że każdy używa własnego tokenu.

Spaces, czyli demo w kilka minut

Space to repozytorium z aplikacją, najczęściej w Gradio. Wypychasz kod, a platforma buduje obraz i wystawia adres.

Code
Python
import gradio as gr
from transformers import pipeline

streszczaj = pipeline("summarization", model="facebook/bart-large-cnn")

gr.Interface(
    fn=lambda tekst: streszczaj(tekst, max_length=120)[0]["summary_text"],
    inputs=gr.Textbox(lines=10),
    outputs="text"
).launch()

Darmowy wariant działa na procesorze, co wystarcza do lekkich modeli. Cięższe wymagają mocniejszej maszyny, rozliczanej godzinowo: od trzech centów za godzinę przy samym wzmocnieniu procesora, przez pojedyncze karty graficzne, aż po ponad dwadzieścia trzy dolary za godzinę przy zestawie ośmiu kart. Konta Pro dostają też zwielokrotnioną pulę na karcie ZeroGPU, przydzielanej dynamicznie tylko na czas obliczeń.

Spaces przydają się także wewnątrz zespołu, nie tylko do pokazywania na zewnątrz. Interfejs, w którym osoba z działu obsługi klienta może wkleić dziesięć realnych zgłoszeń i zobaczyć, jak model je klasyfikuje, daje lepszą informację zwrotną niż tabela z metrykami. Przy okazji zbierasz przypadki brzegowe, o których zespół techniczny by nie pomyślał.

Praktyczna uwaga: Space wystawiony publicznie bez ograniczeń bywa wykorzystywany przez boty. Jeśli demo kosztuje Cię za godzinę pracy karty, dołóż limit zapytań albo prosty mechanizm dostępu.

Cennik

PlanKosztCo dostajesz
Free0 USDPubliczne repozytoria, ograniczone limity, pula kredytów na próby
Pro9 USD miesięcznieWyższe limity, ośmiokrotna pula ZeroGPU i najwyższy priorytet w kolejce, większa pula kredytów
Team20 USD za osobę miesięcznieWspólne repozytoria prywatne, dzielona pula kredytów, kontrola dostępu
Enterprise50 USD za osobę miesięcznieRozliczenie centralne, kontrola zgodności, wsparcie
Spaces z mocniejszą maszynąod 0,03 USD za godzinęRozliczenie godzinowe, niezależne od planu

Rachunek za inferencję jest osobny od abonamentu i zależy od modelu oraz dostawcy, do którego trafia żądanie. Przy stałym wolumenie policz koszt tysiąca wywołań w praktyce, bo różnice między modelami o podobnej jakości bywają kilkukrotne.

Dostrajanie modelu na własnych danych

Dostrajanie ma sens rzadziej, niż się wydaje, ale w konkretnych przypadkach daje wyniki nieosiągalne promptem. Chodzi o zadania, w których liczy się trzymanie stałego formatu, słownictwo z wąskiej dziedziny albo styl odpowiedzi charakterystyczny dla organizacji.

Zanim zaczniesz, sprawdź trzy rzeczy. Czy masz przynajmniej kilkaset przykładów dobrej jakości, bo poniżej tego progu efekt bywa gorszy niż przed dostrajaniem. Czy problem nie znika po dodaniu przykładów wprost do promptu, co jest tańsze i odwracalne. Czy zadanie jest stabilne w czasie, ponieważ każda zmiana wymagań oznacza kolejne dostrajanie.

Przy niewielkich zbiorach standardem jest metoda oparta o adaptery, w której trenujesz tylko niewielki dodatek do wag zamiast całego modelu. Wynik zajmuje kilkadziesiąt megabajtów zamiast kilkudziesięciu gigabajtów, a trening mieści się na jednej karcie graficznej.

Code
Python
from peft import LoraConfig, get_peft_model

konfiguracja = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"])
model = get_peft_model(model_bazowy, konfiguracja)

Dane treningowe przygotuj tak samo starannie jak zestaw testowy. Podziel je przed treningiem: część do uczenia, część odłożona do oceny i nietykana. Ocena na tych samych przykładach, na których model się uczył, zawsze wygląda świetnie i nic nie mówi.

Efekt uboczny wart uwagi to zapominanie. Model dostrojony do wąskiego zadania zwykle traci część ogólnych zdolności, więc jeśli ma obsługiwać także rozmowę poza dziedziną, sprawdź to osobno przed wdrożeniem.

Model otwarty czy API dostawcy

WariantZaletaWadaKiedy wybrać
Model otwarty na własnym sprzęcieBrak kosztu za token, dane nie wychodząKoszt sprzętu i utrzymania, słabsza jakość na trudnych zadaniachDuży stały wolumen, dane wrażliwe
Model otwarty przez Inference ProvidersBez sprzętu, łatwa zmiana modeluPłacisz za token, zależność od dostawcyTesty i średni wolumen
Gemini albo OpenAINajwyższa jakość, multimodalnośćKoszt rośnie z wolumenem, dane u dostawcyTrudne zadania, mały i średni ruch
Ollama lokalniePraca offline, zero kosztu za tokenOgraniczenia sprzętu deweloperskiegoPrototypy i praca z danymi poufnymi

Reguła, która sprawdza się w większości projektów: zacznij od modelu zamkniętego, żeby sprawdzić, czy zadanie w ogóle da się rozwiązać. Dopiero gdy działa i znasz wolumen, policz, czy model otwarty obniży rachunek na tyle, żeby pokryć koszt utrzymania.

Warto przy tym liczyć koszt utrzymania uczciwie. Karta graficzna wynajęta w chmurze na stałe kosztuje kilkaset dolarów miesięcznie niezależnie od tego, ile żądań obsłuży, więc próg opłacalności wobec API leży wyżej, niż sugeruje sama stawka za token. Model otwarty zaczyna wygrywać przy stałym, wysokim obciążeniu, a nie przy ruchu skoncentrowanym w kilku godzinach dziennie.

Do zadań prostych i masowych, jak klasyfikacja czy embeddingi, model otwarty wygrywa niemal zawsze. Do zadań wymagających rozumowania różnica jakości nadal bywa widoczna.

Licencje, o których trzeba pamiętać

Otwarte wagi nie znaczą dowolnego użytku. Modele na Hubie mają różne licencje i część z nich ogranicza zastosowanie komercyjne, wymaga podania źródła albo zabrania używania wyników do trenowania konkurencyjnych modeli.

Trzy rzeczy warto sprawdzić przed wdrożeniem. Sama licencja modelu, bo bywa inna niż licencja kodu w tym samym repozytorium. Licencja zbioru danych, na którym model trenowano, ponieważ ograniczenia potrafią przechodzić na wynik. Wymóg akceptacji warunków, widoczny jako formularz przed pobraniem wag, co przy automatycznym pobieraniu w pipelinie kończy się błędem uwierzytelnienia.

Osobnym pytaniem jest pochodzenie danych treningowych, na które licencja nie zawsze odpowiada. Modele generujące obrazy oraz kod bywają przedmiotem sporów o to, na czym je trenowano, a ryzyko przechodzi na tego, kto publikuje wynik. W zastosowaniach, gdzie efekt trafia do klienta jako produkt, warto to rozstrzygnąć z prawnikiem, a nie na podstawie wpisu w karcie modelu.

W firmie sensownie jest utrzymywać krótką listę zaakceptowanych licencji i sprawdzać ją przy dodawaniu modelu do projektu. Odkrycie po roku, że model w produkcji ma licencję niekomercyjną, jest problemem prawnym, nie technicznym.

Typowe błędy

Pierwszy to wybieranie największego modelu, jaki się zmieści. Wersja podstawowa często wystarcza do klasyfikacji czy embeddingów, a działa kilka razy szybciej i taniej.

Drugi to pobieranie wag w każdym uruchomieniu kontenera. Ustaw katalog pamięci podręcznej i zamontuj go jako wolumen, inaczej start usługi zajmuje minuty i generuje niepotrzebny ruch.

Trzeci to pomijanie tokenizera przy porównaniach. Ten sam tekst po polsku zużywa różną liczbę tokenów w różnych modelach, więc porównanie kosztu bez tego jest mylące.

Czwarty to używanie modelu bez sprawdzenia karty. Model wytrenowany na danych z jednej dziedziny potrafi zachowywać się nieprzewidywalnie na innej, a karta zwykle o tym uprzedza.

Piąty to trzymanie tokenu dostępu w kodzie. Token z uprawnieniem do zapisu pozwala modyfikować repozytoria organizacji, więc traktuj go jak klucz produkcyjny.

FAQ

Czy Hugging Face jest darmowy?

Konto darmowe daje dostęp do publicznych modeli i zbiorów danych oraz niewielką pulę kredytów na inferencję. Plan Pro kosztuje 9 USD miesięcznie i podnosi limity, Team 20 USD za osobę, Enterprise 50 USD za osobę.

Osobno rozliczany jest magazyn repozytoriów prywatnych, o czym łatwo zapomnieć przy platformie kojarzonej z darmowym hostowaniem modeli. Stawka zaczyna się od osiemnastu dolarów za terabajt miesięcznie i maleje przy większych wolumenach. Ruch wychodzący i sieć dostarczania treści są w tej cenie, więc rachunek zależy od tego, ile trzymasz, a nie ile pobierasz. Przy zespole wersjonującym kilka wariantów dużego modelu ta pozycja rośnie szybciej niż abonament. Osobno rozliczane są Spaces na mocniejszej maszynie, od trzech centów za godzinę przy wzmocnionym procesorze wzwyż.

Czy mogę używać modeli komercyjnie?

Zależy od licencji konkretnego modelu, bo różnią się między sobą. Część pozwala na dowolne użycie, część ogranicza zastosowanie komercyjne albo nakłada dodatkowe warunki. Sprawdź licencję modelu i zbioru treningowego przed wdrożeniem.

Czym różni się Hugging Face od Ollamy?

Hugging Face to repozytorium i usługi wokół modeli, Ollama to narzędzie do uruchamiania modeli lokalnie jednym poleceniem. Nie konkurują ze sobą wprost: wiele modeli dostępnych w Ollamie pochodzi właśnie z Hubu.

Czy potrzebuję karty graficznej?

Do modeli embeddingowych i mniejszych klasyfikatorów wystarczy procesor, zwłaszcza przy niewielkim wolumenie. Modele językowe rzędu kilku miliardów parametrów wymagają karty albo skorzystania z Inference Providers, gdzie sprzęt jest po stronie dostawcy.

Jak zacząć bez uczenia własnego modelu?

Znajdź gotowy model do swojego zadania, uruchom go przez potok w bibliotece Transformers albo przez API i sprawdź jakość na własnych danych. Trenowanie własnego modelu ma sens dopiero wtedy, gdy żaden gotowy nie daje wystarczających wyników, a masz dane do dostrojenia.

Zasady rozliczeń opisuje dokumentacja Inference Providers, a modele znajdziesz na huggingface.co.