Créer un monde où chacun peut contribuer à une Intelligence Générale Artificielle, en commençant par les données.
Oxen est essentiellement une bibliothèque de contrôle de version de données, écrite en Rust. Ses objectifs sont d'être rapide, fiable et facile à utiliser. Il est conçu pour être utilisé de différentes manières, depuis un simple outil de ligne de commande jusqu'à un serveur distant avec lequel se synchroniser, en passant par des intégrations dans d'autres écosystèmes tels que Python.
La documentation de la chaîne d'outils Oxen.ai peut être trouvée ici.
transformers
datasets
Oxen est purement écrit en Rust ?. Vous devez installer la chaîne d'outils Rust avec rustup : https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Si vous êtes un développeur et souhaitez en savoir plus sur l'ajout de code ou sur l'architecture globale, commencez ici. Sinon, un démarrage rapide pour s’assurer que tout fonctionne suit.
cargo build
Si vous utilisez Intel Mac, vous devrez peut-être construire avec ce qui suit
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Si vous êtes sous Windows, vous devrez peut-être ajouter les répertoires suivants à la variable d'environnement 'INCLUDE'
"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"
Ce sont des exemples de chemins et varient selon les machines. Si vous installez « Outils C++ Clang pour Windows » via Microsoft Visual Studio Build Tools, les répertoires peuvent être localisés à partir de l'installation de Visual Studio sous « BuildToolsVCTools ».
Vous pouvez utiliser l'éditeur de liens de moules pour accélérer les builds (la version macOS sous licence MIT est vendue).
Utilisez les instructions suivantes pour installer la cargaison vendue et la configurer afin de l'utiliser pour construire des bœufs :
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 .
Créez ensuite .cargo/config.toml
dans la racine de votre dépôt Oxen avec le contenu suivant :
[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"]
Pour macOS avec Apple Silicon , vous pouvez utiliser l'éditeur de liens lld.
brew install llvm
Créez ensuite .cargo/config.toml
dans la racine de votre dépôt Oxen avec ce qui suit :
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
Pour exécuter Oxen à partir de la ligne de commande, ajoutez le répertoire Oxen/target/debug
à la variable d'environnement 'PATH'
export PATH="$PATH:/path/to/Oxen/target/debug"
Sous Windows, vous pouvez utiliser
$env:PATH += ";/path/to/Oxen/target/debug"
Initialiser un nouveau référentiel ou cloner un existant
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
Cela créera le répertoire .oxen
dans votre répertoire actuel et vous permettra d'exécuter les commandes Oxen CLI
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
Pour exécuter un serveur Oxen local, générez un fichier de configuration et un jeton pour authentifier l'utilisateur
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
Copiez la configuration aux emplacements par défaut
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
Définissez l'endroit où vous souhaitez que les données soient synchronisées. Le répertoire de synchronisation par défaut est ./data/
pour le modifier, définissez la variable d'environnement SYNC_DIR sur un chemin.
export SYNC_DIR=/path/to/sync/dir
Vous pouvez également créer un fichier .env.local dans le répertoire /src/server qui peut contenir la variable SYNC_DIR pour éviter de la définir à chaque fois que vous exécutez le serveur.
Exécutez le serveur
./target/debug/oxen-server start
Pour exécuter le serveur avec le rechargement en direct, installez d'abord cargo-watch
cargo install cargo-watch
Sous Windows, vous devrez peut-être utiliser cargo-watch --locked
cargo install cargo-watch --locked
Ensuite, lancez le serveur comme ceci
cargo watch -- cargo run --bin oxen-server start
Si Nix est installé, vous pouvez utiliser le flocon pour créer et exécuter le serveur. Cela installera et configurera automatiquement les dépendances requises de la chaîne d'outils de construction pour Linux et macOS.
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
Pour développer avec la chaîne d'outils Rust standard dans un shell de développement Nix :
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
Le flocon fournit également des dérivations pour créer des images OCI (Docker) avec l'ensemble minimal de dépendances requis pour créer et exécuter oxen
& oxen-server
.
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
Cela exportera l'image OCI et pourra être chargé avec :
docker load -i result
Assurez-vous que votre utilisateur est configuré et que le serveur s'exécute sur le port et l'hôte par défaut, en suivant ces étapes de configuration :
# 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
Remarque : les tests ouvrent de nombreux descripteurs de fichiers, limitez donc le nombre de threads de test si vous exécutez tout.
Vous pouvez également augmenter le nombre de fichiers ouverts que votre système autorise ulimit avant d'exécuter des tests :
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
Il peut être plus rapide (en termes de compilation et d’exécution) d’exécuter un test spécifique. Pour exécuter un test de bibliothèque spécifique :
cargo test --lib test_get_metadata_text_readme
Pour exécuter un test d'intégration spécifique
cargo test --test test_rm test_rm_directory_restore_directory
Pour exécuter avec toutes les sorties de débogage et exécuter un test spécifique
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
Pour définir un hôte de test différent, vous pouvez définir la variable d'environnement OXEN_TEST_HOST
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
Les référentiels distants ont la même structure interne que les référentiels locaux, à la différence près que toutes les données se trouvent dans le répertoire .oxen et ne sont pas dupliquées dans un "espace de travail local".
Le serveur est par défaut localhost 3000
set SERVER 0.0.0.0:3000
Vous pouvez récupérer votre jeton d'authentification dans le fichier de configuration ci-dessus (~/.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"
Créer l'image du menu fixe
docker build -t oxen/server:0.6.0 .
Exécutez un conteneur sur le port 3000 avec un système de fichiers local monté de /var/oxen/data sur l'hôte vers /var/oxen/data dans le conteneur.
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
Ou utilisez Docker Compose
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate