Crear un mundo donde todos puedan contribuir a una Inteligencia General Artificial, empezando por los datos.
Oxen en esencia es una biblioteca de control de versiones de datos, escrita en Rust. Sus objetivos son ser rápido, confiable y fácil de usar. Está diseñado para usarse de diversas maneras, desde una simple herramienta de línea de comandos hasta un servidor remoto para sincronizar e integraciones con otros ecosistemas como Python.
La documentación de la cadena de herramientas Oxen.ai se puede encontrar aquí.
transformers
. datasets
Oxen está escrito puramente en Rust?. Debe instalar la cadena de herramientas Rust con Rustup: https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Si es desarrollador y desea obtener más información sobre cómo agregar código o la arquitectura general, comience aquí. De lo contrario, a continuación se realizará un inicio rápido para asegurarse de que todo esté funcionando.
cargo build
Si usa Intel Mac, es posible que necesite compilar con lo siguiente
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Si está en Windows, es posible que necesite agregar los siguientes directorios a la variable de entorno '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"
Estas son rutas de ejemplo y variarán entre máquinas. Si instala 'Herramientas C++ Clang para Windows' a través de Microsoft Visual Studio Build Tools, los directorios se pueden ubicar desde la instalación de Visual Studio en 'BuildToolsVCTools'
Puede utilizar el vinculador de moldes para acelerar las compilaciones (se vende la versión macOS con licencia MIT).
Utilice las siguientes instrucciones para instalar la carga vendida y configurarla para usarla en la construcción de bueyes:
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 .
Luego cree .cargo/config.toml
en la raíz del repositorio de Oxen con el siguiente contenido:
[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"]
Para macOS con Apple Silicon , puede utilizar el vinculador lld.
brew install llvm
Luego cree .cargo/config.toml
en la raíz del repositorio de Oxen con lo siguiente:
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
Para ejecutar Oxen desde la línea de comando, agregue el directorio Oxen/target/debug
a la variable de entorno 'PATH'
export PATH="$PATH:/path/to/Oxen/target/debug"
En Windows, puedes usar
$env:PATH += ";/path/to/Oxen/target/debug"
Inicializar un nuevo repositorio o clonar uno existente
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
Esto creará el directorio .oxen
en su directorio actual y le permitirá ejecutar los comandos CLI de Oxen
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
Para ejecutar un servidor Oxen local, genere un archivo de configuración y un token para autenticar al usuario.
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
Copie la configuración a las ubicaciones predeterminadas
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
Establezca dónde desea que se sincronicen los datos. El directorio de sincronización predeterminado es ./data/
para cambiarlo, establezca la variable de entorno SYNC_DIR en una ruta.
export SYNC_DIR=/path/to/sync/dir
También puede crear un archivo .env.local en el directorio /src/server que puede contener la variable SYNC_DIR para evitar configurarla cada vez que ejecuta el servidor.
Ejecute el servidor
./target/debug/oxen-server start
Para ejecutar el servidor con recarga en vivo, primero instale cargo-watch
cargo install cargo-watch
En Windows, es posible que necesites usar cargo-watch --locked
cargo install cargo-watch --locked
Luego ejecuta el servidor así.
cargo watch -- cargo run --bin oxen-server start
Si tiene Nix instalado, puede usar el flake para construir y ejecutar el servidor. Esto instalará y configurará automáticamente las dependencias de la cadena de herramientas de compilación necesarias para Linux y macOS.
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
Para desarrollar con la cadena de herramientas estándar de Rust en un shell de desarrollo Nix:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
El flake también proporciona desviaciones para crear imágenes OCI (Docker) con el conjunto mínimo de dependencias necesarias para crear y ejecutar oxen
& oxen-server
.
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
Esto exportará la imagen OCI y se puede cargar con:
docker load -i result
Asegúrese de que su usuario esté configurado y que el servidor se esté ejecutando en el puerto y host predeterminados, siguiendo estos pasos de configuración:
# 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
Nota: las pruebas abren muchos identificadores de archivos, así que limite el número de subprocesos de prueba si ejecuta todo.
También puede aumentar la cantidad de archivos abiertos que su sistema permite ulimit antes de ejecutar las pruebas:
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
Puede ser más rápido (en términos de compilación y tiempo de ejecución) ejecutar una prueba específica. Para ejecutar una prueba de biblioteca específica:
cargo test --lib test_get_metadata_text_readme
Para ejecutar una prueba de integración específica
cargo test --test test_rm test_rm_directory_restore_directory
Para ejecutar con todos los resultados de depuración y ejecutar una prueba específica
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
Para configurar un host de prueba diferente, puede configurar la variable de entorno OXEN_TEST_HOST
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
Los repositorios remotos tienen la misma estructura interna que los locales, con la salvedad de que todos los datos están en el directorio .oxen y no están duplicados en un "espacio de trabajo local".
El servidor tiene por defecto localhost 3000
set SERVER 0.0.0.0:3000
Puede obtener su token de autenticación del archivo de configuración anterior (~/.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"
Crea la imagen de la ventana acoplable
docker build -t oxen/server:0.6.0 .
Ejecute un contenedor en el puerto 3000 con un sistema de archivos local montado desde /var/oxen/data en el host a /var/oxen/data en el contenedor.
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
O usar Docker Compose
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate