데이터를 시작으로 누구나 인공일반지능에 기여할 수 있는 세상을 만들어 보세요.
Oxen의 핵심은 Rust로 작성된 데이터 버전 제어 라이브러리입니다. 목표는 빠르고 안정적이며 사용하기 쉬운 것입니다. 간단한 명령줄 도구부터 동기화할 원격 서버, Python과 같은 다른 생태계와의 통합에 이르기까지 다양한 방법으로 사용되도록 설계되었습니다.
Oxen.ai 도구 체인에 대한 문서는 여기에서 찾을 수 있습니다.
transformers
라이브러리가 포함된 모델 다운로드 datasets
라이브러리가 포함된 데이터세트 다운로드 Oxen은 순수하게 Rust ?로 작성되었습니다. Rustup(https://www.rust-lang.org/tools/install)을 사용하여 Rust 툴체인을 설치해야 합니다.
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를 통해 'Windows용 C++ Clang 도구'를 설치하는 경우 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
또한 SYNC_DIR 변수를 포함할 수 있는 /src/server 디렉토리에 .env.local 파일을 생성하여 서버를 실행할 때마다 설정을 피할 수도 있습니다.
서버 실행
./target/debug/oxen-server start
라이브 리로드로 서버를 실행하려면 먼저 화물 시계를 설치하십시오.
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 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