Criar um mundo onde todos possam contribuir para uma Inteligência Artificial Geral, começando pelos dados.
Oxen é basicamente uma biblioteca de controle de versão de dados, escrita em Rust. Seus objetivos são ser rápidos, confiáveis e fáceis de usar. Ele foi projetado para ser usado de várias maneiras, desde uma simples ferramenta de linha de comando até um servidor remoto para sincronização e integrações com outros ecossistemas, como python.
A documentação da cadeia de ferramentas Oxen.ai pode ser encontrada aqui.
transformers
datasets
Bois é escrito puramente em Rust?. Você deve instalar o conjunto de ferramentas Rust com ferrugem: https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Se você é um desenvolvedor e deseja aprender mais sobre como adicionar código ou a arquitetura geral, comece aqui. Caso contrário, segue um início rápido para garantir que tudo está funcionando.
cargo build
Se estiver no Intel Mac, pode ser necessário construir com o seguinte
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Se estiver no Windows, pode ser necessário adicionar os seguintes diretórios à variável de ambiente '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"
Estes são exemplos de caminhos e variam entre as máquinas. Se você instalar 'ferramentas C++ Clang para Windows' por meio do Microsoft Visual Studio Build Tools, os diretórios poderão ser localizados na instalação do Visual Studio em 'BuildToolsVCTools'
Você pode usar o vinculador de molde para acelerar compilações (a versão macOS licenciada pelo MIT é vendida).
Use as seguintes instruções para instalar a carga vendida e configurar a carga para usá-la na construção de Bois:
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 .
Em seguida, crie .cargo/config.toml
na raiz do repositório Oxen com o seguinte conteúdo:
[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 com Apple Silicon , você pode usar o vinculador lld.
brew install llvm
Em seguida, crie .cargo/config.toml
na raiz do repositório Oxen com o seguinte:
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
Para executar o Oxen a partir da linha de comando, adicione o diretório Oxen/target/debug
à variável de ambiente 'PATH'
export PATH="$PATH:/path/to/Oxen/target/debug"
No Windows, você pode usar
$env:PATH += ";/path/to/Oxen/target/debug"
Inicialize um novo repositório ou clone um existente
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
Isso criará o diretório .oxen
em seu diretório atual e permitirá que você execute comandos Oxen CLI
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
Para executar um Oxen Server local, gere um arquivo de configuração e token para autenticar o usuário
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
Copie a configuração para os locais padrão
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
Defina para onde você deseja que os dados sejam sincronizados. O diretório de sincronização padrão é ./data/
para alterá-lo, defina a variável de ambiente SYNC_DIR como um caminho.
export SYNC_DIR=/path/to/sync/dir
Você também pode criar um arquivo .env.local no diretório /src/server que pode conter a variável SYNC_DIR para evitar configurá-la toda vez que você executar o servidor.
Execute o servidor
./target/debug/oxen-server start
Para executar o servidor com recarga ao vivo, primeiro instale o cargo-watch
cargo install cargo-watch
No Windows, pode ser necessário usar cargo-watch --locked
cargo install cargo-watch --locked
Então execute o servidor assim
cargo watch -- cargo run --bin oxen-server start
Se você tiver o Nix instalado, poderá usar o flake para construir e executar o servidor. Isso instalará e configurará automaticamente as dependências do conjunto de ferramentas de construção necessárias para Linux e macOS.
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
Para desenvolver com o conjunto de ferramentas de ferrugem padrão em um shell de desenvolvimento Nix:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
O flake também fornece desvios para construir imagens OCI (Docker) com o conjunto mínimo de dependências necessárias para construir e executar oxen
& oxen-server
.
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
Isso exportará a imagem OCI e poderá ser carregada com:
docker load -i result
Certifique-se de que seu usuário esteja configurado e que o servidor esteja em execução na porta e no host padrão, seguindo estas etapas de configuração:
# 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: os testes abrem muitos identificadores de arquivo, portanto, limite o número de threads de teste se estiver executando tudo.
Você também pode aumentar o número de arquivos abertos que seu sistema permite ulimit antes de executar testes:
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
Pode ser mais rápido (em termos de compilação e tempo de execução) executar um teste específico. Para executar um teste de biblioteca específico:
cargo test --lib test_get_metadata_text_readme
Para executar um teste de integração específico
cargo test --test test_rm test_rm_directory_restore_directory
Para executar com toda a saída de depuração e executar um teste específico
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
Para definir um host de teste diferente, você pode definir a variável de ambiente OXEN_TEST_HOST
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
Os repositórios remotos possuem a mesma estrutura interna dos locais, com a ressalva de que todos os dados estão no diretório .oxen e não são duplicados em um "espaço de trabalho local".
O padrão do servidor é localhost 3000
set SERVER 0.0.0.0:3000
Você pode obter seu token de autenticação no arquivo de configuração acima (~/.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"
Crie a imagem do docker
docker build -t oxen/server:0.6.0 .
Execute um contêiner na porta 3000 com um sistema de arquivos local montado de /var/oxen/data no host para /var/oxen/data no contêiner.
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
Ou use o docker compose
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate