Ciptakan dunia di mana setiap orang dapat berkontribusi pada Kecerdasan Umum Buatan, dimulai dengan data.
Oxen pada intinya adalah pustaka kontrol versi data, yang ditulis dalam Rust. Tujuannya adalah menjadi cepat, andal, dan mudah digunakan. Ini dirancang untuk digunakan dalam berbagai cara, mulai dari alat baris perintah sederhana, hingga server jarak jauh untuk disinkronkan, hingga integrasi ke ekosistem lain seperti python.
Dokumentasi untuk rantai alat Oxen.ai dapat ditemukan di sini.
transformers
datasets
Oxen murni ditulis dalam Rust?. Anda harus menginstal toolchain Rust dengan Rustup: https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Jika Anda seorang pengembang dan ingin mempelajari lebih lanjut tentang menambahkan kode atau arsitektur secara keseluruhan, mulailah dari sini. Jika tidak, langkah awal yang cepat untuk memastikan semuanya berfungsi adalah sebagai berikut.
cargo build
Jika menggunakan intel mac, Anda mungkin perlu membangun dengan yang berikut ini
$ rustup target install x86_64-apple-darwin
$ cargo build --target x86_64-apple-darwin
Jika menggunakan Windows, Anda mungkin perlu menambahkan direktori berikut ke variabel lingkungan '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"
Ini adalah contoh jalur dan akan bervariasi antar mesin. Jika Anda menginstal 'Alat C++ Clang untuk Windows' melalui Microsoft Visual Studio Build Tools, direktori dapat ditemukan dari instalasi Visual Studio di bawah 'BuildToolsVCTools'
Anda dapat menggunakan penghubung cetakan untuk mempercepat pembuatan (Versi MacOS berlisensi MIT dijual).
Gunakan instruksi berikut untuk menginstal yang dijual dan konfigurasikan kargo untuk digunakan dalam membangun 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 .
Kemudian buat .cargo/config.toml
di root repo Oxen Anda dengan konten berikut:
[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"]
Untuk macOS dengan Apple Silicon , Anda dapat menggunakan tautan lld.
brew install llvm
Kemudian buat .cargo/config.toml
di root repo Oxen Anda dengan yang berikut:
[target.aarch64-apple-darwin]
rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", ]
Untuk menjalankan Oxen dari baris perintah, tambahkan direktori Oxen/target/debug
ke variabel lingkungan 'PATH'
export PATH="$PATH:/path/to/Oxen/target/debug"
Di Windows, Anda dapat menggunakan
$env:PATH += ";/path/to/Oxen/target/debug"
Inisialisasi repositori baru atau kloning yang sudah ada
oxen init
oxen clone https://hub.oxen.ai/namespace/repository
Ini akan membuat direktori .oxen
di direktori Anda saat ini dan memungkinkan Anda menjalankan perintah Oxen CLI
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
Untuk menjalankan Server Oxen lokal, buat file konfigurasi dan token untuk mengautentikasi pengguna
./target/debug/oxen-server add-user --email [email protected] --name Ox --output user_config.toml
Salin konfigurasi ke lokasi default
mkdir ~/.oxen
mv user_config.toml ~/.oxen/user_config.toml
cp ~/.oxen/user_config.toml data/test/config/user_config.toml
Tetapkan di mana Anda ingin data disinkronkan. Direktori sinkronisasi default adalah ./data/
untuk mengubahnya, atur variabel lingkungan SYNC_DIR ke jalur.
export SYNC_DIR=/path/to/sync/dir
Anda juga dapat membuat file .env.local di direktori /src/server yang dapat berisi variabel SYNC_DIR untuk menghindari pengaturannya setiap kali Anda menjalankan server.
Jalankan servernya
./target/debug/oxen-server start
Untuk menjalankan server dengan live reload, instal terlebih dahulu cargo-watch
cargo install cargo-watch
Di Windows, Anda mungkin perlu menggunakan cargo-watch --locked
cargo install cargo-watch --locked
Kemudian jalankan server seperti ini
cargo watch -- cargo run --bin oxen-server start
Jika Anda telah menginstal Nix, Anda dapat menggunakan flake untuk membangun dan menjalankan server. Ini secara otomatis akan menginstal dan mengonfigurasi dependensi build toolchain yang diperlukan untuk Linux & macOS.
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
Untuk mengembangkan dengan rantai alat karat standar di shell Nix dev:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
Serpihan ini juga menyediakan derviasi untuk membangun image OCI (Docker) dengan rangkaian dependensi minimal yang diperlukan untuk membangun dan menjalankan oxen
& oxen-server
.
nix build .#oci-oxen-server
nix build .#oci-oxen-cli
Ini akan mengekspor gambar OCI dan dapat dimuat dengan:
docker load -i result
Pastikan pengguna Anda dikonfigurasi dan server berjalan pada port dan host default, dengan mengikuti langkah-langkah pengaturan berikut:
# 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
Catatan: pengujian membuka banyak pegangan file, jadi batasi jumlah rangkaian pengujian jika menjalankan semuanya.
Anda juga dapat menambah jumlah file terbuka yang diizinkan sistem Anda ulimit sebelum menjalankan tes:
ulimit -n 10240
cargo test -- --test-threads=$(nproc)
Ini bisa lebih cepat (dalam hal kompilasi dan runtime) untuk menjalankan pengujian tertentu. Untuk menjalankan tes perpustakaan tertentu:
cargo test --lib test_get_metadata_text_readme
Untuk menjalankan tes integrasi tertentu
cargo test --test test_rm test_rm_directory_restore_directory
Untuk menjalankan semua keluaran debug dan menjalankan pengujian tertentu
env RUST_LOG=warn,liboxen=debug,integration_test=debug cargo test -- --nocapture test_command_push_clone_pull_push
Untuk menyetel host pengujian yang berbeda, Anda dapat menyetel variabel lingkungan OXEN_TEST_HOST
env OXEN_TEST_HOST=0.0.0.0:4000 cargo test
Repositori jarak jauh memiliki struktur internal yang sama dengan repositori lokal, dengan syarat semua data ada di direktori .oxen dan tidak diduplikasi ke "ruang kerja lokal".
Server defaultnya adalah localhost 3000
set SERVER 0.0.0.0:3000
Anda dapat mengambil token autentikasi Anda dari file konfigurasi di atas (~/.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"
Buat gambar buruh pelabuhan
docker build -t oxen/server:0.6.0 .
Jalankan container pada port 3000 dengan sistem file lokal yang dipasang dari /var/oxen/data di host ke /var/oxen/data di container.
docker run -d -v /var/oxen/data:/var/oxen/data -p 3000:3001 --name oxen oxen/server:0.6.0
Atau gunakan penulisan buruh pelabuhan
docker-compose up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate