Создайте мир, в котором каждый сможет внести свой вклад в общий искусственный интеллект, начиная с данных.
По своей сути 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"
Это примеры путей, которые будут различаться на разных машинах. Если вы устанавливаете «Инструменты C++ Clang для Windows» с помощью Microsoft Visual Studio Build Tools, каталоги можно найти из установки Visual Studio в разделе «BuildToolsVCTools».
Вы можете использовать компоновщик форм для ускорения сборки (версия для macOS с лицензией MIT продается).
Используйте следующие инструкции, чтобы установить проданный и настроить груз для использования его для создания Быков:
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"]
Для macOS с Apple Silicon вы можете использовать компоновщик lld.
brew install llvm
Затем создайте .cargo/config.toml
в корне вашего репозитория Oxen со следующим:
[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
Вы также можете создать файл .env.local в каталоге /src/server, который может содержать переменную 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
Для разработки с помощью стандартной цепочки инструментов Rust в оболочке разработки Nix:
nix develop -c $SHELL
cargo build
cargo run --bin oxen-server start
cargo run --bin oxen start
Флейк также предоставляет варианты для создания образов 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