データから始めて、誰もが汎用人工知能に貢献できる世界を作成します。
Oxen の核となるのは、Rust で書かれたデータ バージョン管理ライブラリです。その目標は、高速で信頼性が高く、使いやすいことです。シンプルなコマンド ライン ツールから、同期先のリモート サーバー、Python などの他のエコシステムへの統合まで、さまざまな方法で使用できるように設計されています。
Oxen.ai ツール チェーンのドキュメントはここにあります。
transformers
ライブラリを含むモデルをダウンロードdatasets
ライブラリを使用してデータセットをダウンロードするOxen は純粋に Rust で書かれていますか? Rust ツールチェーンは、rustup を使用してインストールする必要があります: https://www.rust-lang.org/tools/install。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
あなたが開発者で、コードの追加やアーキテクチャ全体について詳しく知りたい場合は、ここから始めてください。それ以外の場合は、すべてが機能していることを確認するためのクイックスタートが続きます。
cargo build
Intel Mac の場合は、次のようにビルドする必要がある場合があります。
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Windows の場合は、次のディレクトリを「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"
これらはパスの例であり、マシンによって異なります。 Microsoft Visual Studio Build Tools を通じて「C++ Clang tools for Windows」をインストールする場合、ディレクトリは Visual Studio インストールの「BuildToolsVCTools」に配置できます。
モールド リンカーを使用すると、ビルドを高速化できます (MIT ライセンスの macOS バージョンが販売されています)。
次の手順に従って、販売済みのカーゴをインストールし、Oxen の構築に使用できるように設定します。
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 .
次に、次の内容を含む.cargo/config.toml
Oxen リポジトリのルートに作成します。
[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"]
Apple Silicon を搭載した macOS の場合は、lld リンカーを使用できます。
brew install llvm
次に、次のようにして Oxen リポジトリのルートに.cargo/config.toml
を作成します。
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
コマンドラインから Oxen を実行するには、 Oxen/target/debug
ディレクトリを「PATH」環境変数に追加します。
export PATH="$PATH:/path/to/Oxen/target/debug"
Windows では、次のように使用できます。
$env:PATH += ";/path/to/Oxen/target/debug"
新しいリポジトリを初期化するか、既存のリポジトリのクローンを作成します
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
これにより、現在のディレクトリに.oxen
ディレクトリが作成され、Oxen CLI コマンドを実行できるようになります。
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
ローカル Oxen サーバーを実行するには、ユーザーを認証するための構成ファイルとトークンを生成します。
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
設定をデフォルトの場所にコピーします
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
データを同期する場所を設定します。デフォルトの同期ディレクトリは./data/
です。これを変更するには、SYNC_DIR 環境変数をパスに設定します。
export SYNC_DIR=/path/to/sync/dir
/src/server ディレクトリに .env.local ファイルを作成して、SYNC_DIR 変数を含めることもでき、サーバーを実行するたびに設定する必要がなくなります。
サーバーを実行する
./target/debug/oxen-server start
ライブ リロードでサーバーを実行するには、まず Cargo-watch をインストールします
cargo install cargo-watch
Windows では、 cargo-watch --locked
使用が必要になる場合があります。
cargo install cargo-watch --locked
次に、次のようにサーバーを実行します
cargo watch -- cargo run --bin oxen-server start
Nix がインストールされている場合は、フレークを使用してサーバーを構築して実行できます。これにより、Linux および macOS に必要なビルド ツールチェーンの依存関係が自動的にインストールされ、構成されます。
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
Nix 開発シェルで標準の Rust ツールチェーンを使用して開発するには:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
このフレークは、 oxen
およびoxen-server
構築して実行するために必要な最小限の依存関係セットを備えた OCI (Docker) イメージを構築するための逸脱も提供します。
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
これにより OCI イメージがエクスポートされ、次のものを使用してロードできます。
docker load -i result
次のセットアップ手順に従って、ユーザーが構成され、サーバーがデフォルトのポートとホストで実行されていることを確認します。
# 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
注:テストでは多くのファイル ハンドルが開かれるため、すべてを実行する場合はテスト スレッドの数を制限してください。
テストを実行する前に、システムが許可するオープン ファイルの数を ulimit まで増やすこともできます。
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
特定のテストを実行する方が (コンパイルと実行時間の点で) 高速になる場合があります。特定のライブラリ テストを実行するには:
cargo test --lib test_get_metadata_text_readme
特定の統合テストを実行するには
cargo test --test test_rm test_rm_directory_restore_directory
すべてのデバッグ出力を使用して実行し、特定のテストを実行するには
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
別のテスト ホストを設定するには、 OXEN_TEST_HOST
環境変数を設定します。
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
リモート リポジトリの内部構造はローカル リポジトリと同じですが、すべてのデータが .oxen ディレクトリにあり、「ローカル ワークスペース」に複製されないという点が異なります。
サーバーのデフォルトは localhost 3000
set SERVER 0.0.0.0:3000
上記の構成ファイル (~/.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"
Dockerイメージを作成する
docker build -t oxen/server:0.6.0 .
ホスト上の /var/oxen/data からコンテナ内の /var/oxen/data にマウントされたローカル ファイル システムを使用して、ポート 3000 でコンテナを実行します。
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
または docker compose を使用します
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate