創建一個每個人都可以從數據開始為通用人工智慧做出貢獻的世界。
Oxen 的核心是一個用 Rust 寫的資料版本控制函式庫。它的目標是快速、可靠且易於使用。它被設計為以多種方式使用,從簡單的命令列工具到要同步的遠端伺服器,再到整合到其他生態系統(例如 python)。
可以在此處找到 Oxen.ai 工具鏈的文檔。
transformers
庫的模型datasets
集庫下載資料集Oxen 純粹是用 Rust 寫的?您應該使用 rustup 安裝 Rust 工具鏈: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 建置工具安裝“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 .
然後在 Oxen 儲存庫根目錄中建立.cargo/config.toml
並包含以下內容:
[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,則可以使用 flake 來建置和運行伺服器。這將自動安裝和配置 Linux 和 macOS 所需的建置工具鏈相依性。
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
要在 Nix dev shell 中使用標準 Rust 工具鏈進行開發:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
該 flake 還提供了建置 OCI (Docker) 映像的衍生版本,以及建置和運行oxen
和oxen-server
所需的最小相依性集。
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 build -t oxen/server:0.6.0 .
在連接埠 3000 上執行容器,並將本機檔案系統從主機上的 /var/oxen/data 掛載到容器中的 /var/oxen/data 。
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