Schaffen Sie eine Welt, in der jeder zu einer künstlichen allgemeinen Intelligenz beitragen kann, angefangen bei den Daten.
Oxen ist im Kern eine in Rust geschriebene Datenversionskontrollbibliothek. Ziel ist es, schnell, zuverlässig und einfach zu bedienen zu sein. Es ist für den vielfältigen Einsatz konzipiert, von einem einfachen Befehlszeilentool über einen Remote-Server zur Synchronisierung bis hin zur Integration in andere Ökosysteme wie Python.
Die Dokumentation zur Oxen.ai-Toolkette finden Sie hier.
transformers
herunterladen datasets
herunter Oxen ist rein in Rust geschrieben? Sie sollten die Rust-Toolchain mit rustup installieren: https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Wenn Sie Entwickler sind und mehr über das Hinzufügen von Code oder die Gesamtarchitektur erfahren möchten, beginnen Sie hier. Ansonsten folgt ein kurzer Start, um sicherzustellen, dass alles funktioniert.
cargo build
Wenn Sie einen Intel-Mac verwenden, müssen Sie möglicherweise Folgendes erstellen
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Unter Windows müssen Sie möglicherweise die folgenden Verzeichnisse zur Umgebungsvariablen „INCLUDE“ hinzufügen
"C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.29.30133include"
"C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.29.27023include"
"C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsLlvmlibclang12.0.0include"
Dies sind Beispielpfade, die je nach Maschine unterschiedlich sein können. Wenn Sie „C++ Clang Tools für Windows“ über Microsoft Visual Studio Build Tools installieren, finden Sie die Verzeichnisse in der Visual Studio-Installation unter „BuildToolsVCTools“.
Sie können den Mold-Linker verwenden, um Builds zu beschleunigen (die MIT-lizenzierte macOS-Version wird verkauft).
Befolgen Sie die folgenden Anweisungen, um verkaufte Fracht zu installieren und zu konfigurieren, um sie zum Bau von Oxen zu verwenden:
git clone --depth=1 --single-branch https://github.com/bluewhalesystems/sold.git
mkdir sold/build
cd sold/build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=c++ ..
cmake --build . -j $(nproc)
sudo cmake --install .
Erstellen Sie dann .cargo/config.toml
in Ihrem Oxen-Repo-Root mit folgendem Inhalt:
[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/ld64.mold"]
[target.x86_64-apple-darwin]
rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/ld64.mold"]
Für macOS mit Apple Silicon können Sie den lld-Linker verwenden.
brew install llvm
Erstellen Sie dann .cargo/config.toml
in Ihrem Oxen-Repo-Root mit Folgendem:
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
Um Oxen über die Befehlszeile auszuführen, fügen Sie das Verzeichnis Oxen/target/debug
zur Umgebungsvariablen „PATH“ hinzu
export PATH="$PATH:/path/to/Oxen/target/debug"
Unter Windows können Sie verwenden
$env:PATH += ";/path/to/Oxen/target/debug"
Initialisieren Sie ein neues Repository oder klonen Sie ein vorhandenes
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
Dadurch wird das .oxen
Verzeichnis in Ihrem aktuellen Verzeichnis erstellt und Sie können Oxen-CLI-Befehle ausführen
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
Um einen lokalen Oxen-Server auszuführen, generieren Sie eine Konfigurationsdatei und ein Token zur Authentifizierung des Benutzers
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
Kopieren Sie die Konfiguration an die Standardspeicherorte
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
Legen Sie fest, wohin die Daten synchronisiert werden sollen. Das Standardsynchronisierungsverzeichnis ist ./data/
Um es zu ändern, legen Sie die Umgebungsvariable SYNC_DIR auf einen Pfad fest.
export SYNC_DIR=/path/to/sync/dir
Sie können auch eine .env.local-Datei im Verzeichnis /src/server erstellen, die die Variable SYNC_DIR enthalten kann, um zu vermeiden, dass sie jedes Mal festgelegt wird, wenn Sie den Server ausführen.
Führen Sie den Server aus
./target/debug/oxen-server start
Um den Server mit Live-Reload auszuführen, installieren Sie zunächst Cargo-Watch
cargo install cargo-watch
Unter Windows müssen Sie möglicherweise cargo-watch --locked
verwenden
cargo install cargo-watch --locked
Führen Sie dann den Server wie folgt aus
cargo watch -- cargo run --bin oxen-server start
Wenn Sie Nix installiert haben, können Sie den Flake zum Erstellen und Ausführen des Servers verwenden. Dadurch werden die erforderlichen Build-Toolchain-Abhängigkeiten für Linux und macOS automatisch installiert und konfiguriert.
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
So entwickeln Sie mit der Standard-Rost-Toolchain in einer Nix-Entwickler-Shell:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
Der Flake bietet auch Ableitungen zum Erstellen von OCI-Images (Docker) mit dem minimalen Satz an Abhängigkeiten, die zum Erstellen und Ausführen von oxen
& oxen-server
erforderlich sind.
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
Dadurch wird das OCI-Bild exportiert und kann geladen werden mit:
docker load -i result
Stellen Sie sicher, dass Ihr Benutzer konfiguriert ist und der Server auf dem Standardport und -host ausgeführt wird, indem Sie die folgenden Einrichtungsschritte ausführen:
# Configure a user
mkdir ./data/test/runs
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
cp user_config.toml data/test/config/user_config.toml
# Start the oxen-server
./target/debug/oxen-server start
Hinweis: Tests öffnen viele Dateihandles. Begrenzen Sie daher die Anzahl der Testthreads, wenn Sie alles ausführen.
Sie können auch die Anzahl der geöffneten Dateien erhöhen, die Ihr System ulimit zulässt, bevor Sie Tests ausführen:
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
Es kann schneller sein (hinsichtlich Kompilierung und Laufzeit), einen bestimmten Test auszuführen. So führen Sie einen bestimmten Bibliothekstest aus:
cargo test --lib test_get_metadata_text_readme
Um einen bestimmten Integrationstest auszuführen
cargo test --test test_rm test_rm_directory_restore_directory
Zum Ausführen mit allen Debug-Ausgaben und zum Ausführen eines bestimmten Tests
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
Um einen anderen Testhost festzulegen, können Sie die Umgebungsvariable OXEN_TEST_HOST
festlegen
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
Remote-Repositorys haben die gleiche interne Struktur wie lokale, mit der Ausnahme, dass sich alle Daten im .oxen-Verzeichnis befinden und nicht in einem „lokalen Arbeitsbereich“ dupliziert werden.
Der Server ist standardmäßig auf localhost 3000 eingestellt
set SERVER 0.0.0.0:3000
Sie können Ihr Authentifizierungstoken aus der Konfigurationsdatei oben abrufen (~/.oxen/user_config.toml).
set TOKEN <YOUR_TOKEN>
curl -H "Authorization: Bearer $TOKEN" "http://$SERVER/api/repos"
curl -H "Authorization: Bearer $TOKEN" -X POST -d '{"name": "MyRepo"}' "http://$SERVER/api/repos"
Erstellen Sie das Docker-Image
docker build -t oxen/server:0.6.0 .
Führen Sie einen Container auf Port 3000 mit einem lokalen Dateisystem aus, das von /var/oxen/data auf dem Host in /var/oxen/data im Container gemountet ist.
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
Oder verwenden Sie Docker Compose
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate