YAML Metadata
Warning:
empty or missing yaml metadata in repo card
(https://huggingface.co/docs/hub/model-cards#model-card-metadata)
🚀 Minimalne LLM + Własny Model - Kompletny Guide
🎯 CZĘŚĆ 1: Uruchomienie w 2 minuty
Szybki start (minimalne rozwiązanie)
# 1. Sklonuj pliki
git clone <your-repo>
cd minimal-llm
# 2. Uruchom wszystko jedną komendą
chmod +x quick-start.sh
./quick-start.sh
# 3. Otwórz przeglądarkę
# http://localhost:8501 - Streamlit UI
# http://localhost:11434 - Ollama API
Co się dzieje pod spodem?
- Ollama - pobiera i uruchamia Mistral 7B
- Streamlit - prosty chat interface
- Docker - wszystko w kontenerach
- Minimalne zależności - tylko 3 pakiety Python!
📁 Struktura projektu (minimalna)
minimal-llm/
├── docker-compose.yml # 1 plik - cała infrastruktura
├── Dockerfile # Minimalne image
├── requirements.txt # 3 pakiety
├── quick-start.sh # 1 komenda = pełny setup
└── app/
└── main.py # 50 linijek = pełny chat
🎯 CZĘŚĆ 2: Stwórz własny model LLM
Krok 1: Przygotowanie środowiska
# Instalacja zależności do fine-tuningu
pip install -r model_requirements.txt
# Login do Hugging Face (do publikacji)
huggingface-cli login
Krok 2: Przygotowanie danych
python create_custom_model.py
# Wybierz opcję 1: Stwórz sample dataset
Przykład danych treningowych:
[
{
"instruction": "Jak nazywa się stolica Polski?",
"input": "",
"output": "Stolica Polski to Warszawa."
},
{
"instruction": "Wyjaśnij czym jest sztuczna inteligencja",
"input": "",
"output": "Sztuczna inteligencja (AI) to dziedzina informatyki..."
}
]
Krok 3: Fine-tuning modelu
# Uruchom fine-tuning (wymaga GPU)
python create_custom_model.py
# Wybierz opcję 2: Fine-tune model
# Lub pełny pipeline
python create_custom_model.py
# Wybierz opcję 6: Pełny pipeline
Optymalizacje dla RTX 3050:
- 4-bit quantization
- LoRA (Low-Rank Adaptation)
- Batch size = 1
- Gradient accumulation = 4
- Mixed precision (FP16)
Krok 4: Konwersja do GGUF
# Automatycznie generowany skrypt
./convert_to_gguf.sh
Krok 5: Stworzenie modelu w Ollama
# Utwórz Modelfile
python create_custom_model.py # wybierz opcję 4
# Stwórz model w Ollama
ollama create wronai -f Modelfile
# Uruchom model
ollama run wronai
Uruchamianie skryptu
Skrypt create_custom_model.py oferuje interaktywne menu z następującymi opcjami:
python create_custom_model.py
Dostępne opcje:
- Stwórz przykładowy dataset
- Wykonaj fine-tuning modelu
- Konwertuj model do formatu GGUF
- Utwórz Modelfile dla Ollama
- Opublikuj model na Hugging Face
- Wykonaj pełny pipeline (1-5)
Wymagania wstępne
- Python 3.8+
- PyTorch z obsługą CUDA (zalecane)
- Biblioteki wymienione w
model_requirements.txt - Konto na Hugging Face (do publikacji modelu)
Rozwiązywanie problemów
Błąd składni w skrypcie
Jeśli napotkasz błąd składni, upewnij się, że:
- Używasz Pythona 3.8 lub nowszego
- Wszystkie zależności są zainstalowane
- Plik nie został uszkodzony podczas pobierania
Problemy z zależnościami
# Utwórz i aktywuj środowisko wirtualne
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# Zainstaluj zależności
pip install -r model_requirements.txt
Brakujące uprawnienia
Jeśli napotkasz problemy z uprawnieniami, spróbuj:
# Nadaj uprawnienia do wykonywania skryptów
chmod +x *.sh
# Uruchom z uprawnieniami administratora (jeśli potrzebne)
sudo python create_custom_model.py
Kontrybucja
Zapraszamy do zgłaszania problemów i propozycji zmian poprzez Issues i Pull Requests.
Test modelu
ollama run wronai "Cześć! Kim jesteś?"
### Krok 6: Publikacja modelu
#### **Opcja A: Ollama Registry**
```bash
# Push do Ollama Library
ollama push wronai
# Teraz każdy może użyć:
ollama pull your-username/wronai
Opcja B: Hugging Face Hub
# Publikacja na HF
python publish_to_hf.py
# Model dostępny na:
# https://huggingface.co/your-username/my-custom-mistral-7b
Opcja C: Docker Registry
# Spakuj do Docker image
docker build -t my-custom-llm .
docker tag my-custom-llm your-registry/my-custom-llm
docker push your-registry/my-custom-llm
🎯 CZĘŚĆ 3: Gotowe alternatywy (zero kodu)
1. Najprostsze - Ollama
# Instalacja
curl -fsSL https://ollama.ai/install.sh | sh
# Uruchomienie modelu
ollama run mistral:7b-instruct
# API automatycznie na localhost:11434
2. Hugging Face Inference API
import requests
headers = {"Authorization": "Bearer YOUR_HF_TOKEN"}
response = requests.post(
"https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.1",
headers=headers,
json={"inputs": "Hello!"}
)
3. Groq (ultra szybkie)
from openai import OpenAI
client = OpenAI(
api_key="YOUR_GROQ_KEY",
base_url="https://api.groq.com/openai/v1"
)
response = client.chat.completions.create(
model="mistral-7b-instruct",
messages=[{"role": "user", "content": "Hello!"}]
)
4. Together.ai
from openai import OpenAI
client = OpenAI(
api_key="YOUR_TOGETHER_KEY",
base_url="https://api.together.xyz/v1"
)
# Kompatybilne z OpenAI API
5. Modal.com (serverless GPU)
import modal
stub = modal.Stub("llm-api")
@stub.function(gpu="T4")
def generate(prompt: str):
# Twój kod modelu
return model.generate(prompt)
# Deploy jedną komendą
# modal deploy
🎯 CZĘŚĆ 4: Frontend opcje
1. Streamlit (Python)
import streamlit as st
st.title("My LLM Chat")
prompt = st.text_input("Message:")
if st.button("Send"):
response = generate(prompt)
st.write(response)
2. Gradio (Python)
import gradio as gr
def chat(message, history):
response = generate(message)
history.append([message, response])
return "", history
gr.ChatInterface(chat).launch()
3. Next.js + Vercel AI SDK
import { useChat } from 'ai/react'
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat()
return (
<div>
{messages.map(m => <div key={m.id}>{m.content}</div>)}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
</form>
</div>
)
}
🎯 CZĘŚĆ 5: Porównanie rozwiązań
| Rozwiązanie | Setup Time | Kód | Hosting | GPU |
|---|---|---|---|---|
| Ollama + Streamlit | 2 min | 50 linijek | Local/Docker | Optional |
| Hugging Face API | 30 sec | 5 linijek | Cloud | No |
| Groq API | 1 min | 5 linijek | Cloud | No |
| Modal.com | 5 min | 20 linijek | Serverless | Auto |
| Custom Fine-tuning | 2 hours | 200 linijek | Self-hosted | Required |
🛠️ Debugging & Tips
Typowe problemy
# Model nie ładuje się
docker logs ollama-engine
# Brak GPU
docker run --rm --gpus all nvidia/cuda:11.8-base nvidia-smi
# Port zajęty
sudo netstat -tlnp | grep 11434
# Restart wszystkiego
docker compose down && docker compose up -d
Optymalizacje RTX 3050
# W fine-tuningu
model = AutoModelForCausalLM.from_pretrained(
model_name,
load_in_4bit=True, # 4-bit quantization
torch_dtype=torch.float16 # Half precision
)
# Training args
TrainingArguments(
per_device_train_batch_size=1, # Mały batch
gradient_accumulation_steps=4, # Gradients accumulation
fp16=True # Mixed precision
)
Monitoring zasobów
# GPU monitoring
watch -n 1 nvidia-smi
# Container resources
docker stats
# Model memory usage
docker exec -it ollama-engine ollama ps
🎯 Następne kroki
Dla nauki:
- Eksperymentuj z różnymi modelami - Llama, CodeLlama, Phi-3
- Testuj różne techniki fine-tuningu - LoRA, QLoRA, Full fine-tuning
- Dodaj RAG - Retrieval Augmented Generation
- Stwórz multi-agent system
Dla produkcji:
- Przejdź na managed service - Groq, Together.ai
- Setup monitoring - LangSmith, Weights & Biases
- Dodaj cache - Redis dla odpowiedzi
- Implement rate limiting
Dla biznesu:
- Fine-tune na własnych danych
- Setup A/B testing różnych modeli
- Dodaj feedback loop od użytkowników
- Monetize API
🎉 Podsumowanie
Wybierz opcję według potrzeb:
- Demo/nauka: Ollama + Streamlit (to rozwiązanie)
- Prototyp: Hugging Face API + Gradio
- MVP: Groq API + Next.js
- Produkcja: Modal/RunPod + custom frontend
- Enterprise: Fine-tuned model + własna infrastruktura
Minimalne rozwiązanie = 5 plików, 50 linijek kodu, 2 minuty setup!
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support