Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: split and update README #30

Merged
merged 1 commit into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"cSpell.enableFiletypes": [
"!markdown"
]
}
Binary file modified README.md
Binary file not shown.
68 changes: 68 additions & 0 deletions docs/ai.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Backend AI

Projekt komunikuje się z modelem językowym na backendzie, w tym momencie
dostosowany jest do serwera REST uruchamianego przez
[llama.cpp](https://github.com/ggerganov/llama.cpp) (aplikacja `server`), oraz
testowana była na modelu Mistral-7B i jego pochodnych, w szczególności
[Mistral-RP-0.1-7B-GGUF](https://huggingface.co/Undi95/Mistral-RP-0.1-7B-GGUF?not-for-all-audiences=true).

Aby uruchomić serwer modelu językowego, należy pobrać (lub skompilować)
llama.cpp, pobrać plik modelu z serwera huggingface.co i uruchomić serwer
wydając polecenie, na przykład:

```bash
./server -m <plik modelu> -ngl 35 --host 127.0.0.1
```

(tutaj następuje przeniesienie 35 warstw modelu na urządzenie CUDA, wymagana
jest odmiana llama.cpp z obsługą CUDA, w przeciwnym wypadku parametr `-ngl` nie
jest dostępny)

Pełna dokumentacja serwera:
<https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md>

## docker

Można też uruchomić Backend AI llama.cpp w oparciu o plik
`docker-compose-;lamacpp.yml`. W tym celu należy w pliku `.env`, w którym
znajduje się konfiguracja ustawień lokalnej bazy danych dodać kolejne dwie
zmienne definiujące wariant serwera oraz ścieżkę lokalną do pliku modelu, np.:

```env
LLAMA_VARIANT=full
MODEL_PATH=U:\ml\krakowiak-7b.gguf.q4_k_m.bin
```

Dostępne warianty serwera to: `full` (CPU), `full-cuda` (NVIDIA GPU) i
`full-rocm` (AMD ROCm GPU).

Teraz, zamiast wydawać polecenie `docker compose up` tak jak zwykle, możesz
wydać komendę:

```sh
docker compose -f docker-compose-llamacpp.yml up
```

Co uruchomi zarówno serwer modelu językowego, jak i bazy danych niezbędne
aplikacji głównej.

## Konfiguracja backendu AI w aplikacji

W pliku `Server/appsettings.json`, możesz zdefiniować ścieżkę do URL serwera
llama.cpp, na przykład:

```json
"AiEndpoint": {
"EndpointUrl": "http://127.0.0.1:8080/completion"
}
```

Niezbędne jest również wybranie modułów odpowiedzialnych za komunikację z
backendem AI i przygotowaniem promptów, które to należy wybrać jako pełne nazwy
typów, włącznie z ich _assembly_, dla Mistral-7B należy wybrać
`AlpacaPromptProvider`:

```json
"AiBackendProvider": "Fracture.Shared.External.Providers.Ai.LlamaCpp.LlamaCppBackendProvider, Fracture.Shared.External, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"AiPromptTemplateProvider": "Fracture.Shared.External.Providers.Ai.AlpacaPromptProvider, Fracture.Shared.External, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
```
112 changes: 112 additions & 0 deletions docs/start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Uruchomienie aplikacji

Ten projekt wykorzystuje technologię Docker oraz Docker Compose do zarządzania
kontenerami i uruchamiania infrastruktury aplikacji. Aby uruchomić tę aplikację
na swoim komputerze, postępuj zgodnie z poniższymi krokami:

## 1. Instalacja Docker Desktop

Jeśli nie masz jeszcze zainstalowanego Docker Desktop, musisz to zrobić przed
uruchomieniem aplikacji. Docker Desktop jest dostępny dla systemów Windows,
Linux oraz macOS. Pobierz go stąd:
<https://www.docker.com/products/docker-desktop/>

(Możesz również skorzystać z Rancher Desktop, który jest produktem open source,
<https://github.com/rancher-sandbox/rancher-desktop/releases>, bądź innego,
kompatybilnego z Docker Compose dowolnego rozwiazania)

Po pobraniu i zainstalowaniu Docker Desktop, upewnij się, że jest uruchomiony.

## 2. Pobranie repozytorium

W kolejnym kroku pobierz poniższe repozytorium na swój komputer, wykonując
polecenia w terminalu lub wierszu poleceń w twoim lokalnym katalogu z
repozytoriami kodu.

```bash
git clone https://github.com/pollubnet/fracture.git
cd fracture
```

## 3. Dostosowanie pliku `.env`

W pliku `docker-compose.yml` zostały wykorzystane zmienne środowiskowe. W celu
utworzenia zmiennych środowiskowych skopiuj zawartość pliku `.sample.env` do
pliku o nazwie `.env`. Plik `.env` utwórz w głównym katalogu, w tym samym
miejscu gdzie znajduje się plik `docker-compose.yml`.

Następnie dostosuj zmienne środowiskowe w `.env` do swoich potrzeb oraz dokonaj
analogicznie zmian w projekcie `Fracture.Server` w pliku konfiguracyjnym
`appsettings.json`. Jeżeli używasz domyślnych opcji z pliku przykładowego
`.sample.env`, to nie trzeba dostosowywać pliku `appsettings.json`.

## 4. Uruchomienie infrastruktury aplikacji za pomocą Docker Compose

Po pobraniu repozytorium oraz zainstalowaniu Docker Desktop, możesz uruchomić
infrastrukturę aplikacji za pomocą Docker Compose.

W katalogu projektu znajdziesz plik `docker-compose.yml`, który zawiera
konfigurację kontenerów.

W terminalu przejdź do katalogu głównego projektu i wydaj komendę:

```bash
docker-compose up
```

Docker automatycznie pobierze i uruchomi odpowiednie wersje baz danych i innych
niezbędnych narzędzi.

## 5. Uruchomienie aplikacji w Visual Studio

Aby uruchomić tę aplikację w Visual Studio, rozpocznij od projektu
`Fracture.Server`, który trzeba ustawić jako domyślny. Wykonaj następujące
kroki:

1. Otwórz solucję projektu w Visual Studio (plik `Fracture.sln`),
2. Przejdź do Eksploratora Rozwiązań (Solution Explorer) po prawej stronie,
3. Kliknij prawym przyciskiem myszy na projekcie `Fracture.Server`, a następnie
wybierz opcję "Ustaw jako projekt startowy" (Set as StartUp Project) z menu
kontekstowego.

Teraz `Fracture.Server` jest ustawiony jako domyślny projekt. Możesz zacząć
pracować nad nim i uruchamiać aplikację w trybie debugowania, naciskając klawisz
F5 lub wybierając opcję "Uruchom" (Run) z menu Visual Studio.

Aplikacja uruchomi się, a Visual Studio uruchomi także przeglądarkę internetową
z dostępem do pierwszej strony aplikacji.

## Dodatkowe narzędzia

Dodatkowo w celu zarządzania infrastrukturą aplikacji został uruchomiony
pgAdmin4 oraz Redis Commander pod domyślnymi adresami:

### pgAdmin4

Adres: <http://localhost:8081>

Dostęp:

```
[email protected]
PASSWORD=root
```

### Redis Commander

Adres: <http://localhost:8082>

Dostęp:

```
USER=redis
PASSWORD=password
```

Numery portów, nazwy użytkowników i hasła można edytować w pliku `.env` w
katalogu głównym projektu.

Warto pamiętać, że na tym etapie wszystko powinno poprawnie się uruchomić, jeśli
zostało wcześniej poprawnie skonfigurowane. Jeśli masz jakiekolwiek problemy z
konfiguracją, upewnij się, że wszystkie zależności i środowisko są właściwie
skonfigurowane.