Skip to content

Commit

Permalink
docs: split and update README
Browse files Browse the repository at this point in the history
  • Loading branch information
ktos authored and purifetchi committed Dec 12, 2023
1 parent cf49eaa commit b55caf6
Show file tree
Hide file tree
Showing 4 changed files with 185 additions and 0 deletions.
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.

0 comments on commit b55caf6

Please sign in to comment.