สร้างโลกที่ทุกคนสามารถมีส่วนร่วมในปัญญาประดิษฐ์ทั่วไปโดยเริ่มจากข้อมูล
Oxen ที่แกนหลักคือไลบรารีควบคุมเวอร์ชันข้อมูลซึ่งเขียนด้วยภาษา Rust เป้าหมายคือต้องรวดเร็ว เชื่อถือได้ และใช้งานง่าย ได้รับการออกแบบมาเพื่อใช้ในหลากหลายวิธี ตั้งแต่เครื่องมือบรรทัดคำสั่งง่ายๆ ไปจนถึงเซิร์ฟเวอร์ระยะไกลที่จะซิงค์ ไปจนถึงการรวมเข้ากับระบบนิเวศอื่นๆ เช่น Python
สามารถดูเอกสารประกอบสำหรับกลุ่มเครื่องมือ Oxen.ai ได้ที่นี่
transformers
datasets
Oxen เขียนด้วยภาษา Rust ล้วนๆ ? คุณควรติดตั้ง Rust toolchain ด้วย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 แล้ว)
ใช้คำแนะนำต่อไปนี้เพื่อติดตั้งที่ขายแล้วและกำหนดค่าสินค้าเพื่อใช้ในการสร้าง 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 repo ของคุณด้วยเนื้อหาต่อไปนี้:
[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 repo ของคุณโดยมีสิ่งต่อไปนี้:
[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
dir ในไดเร็กทอรีปัจจุบันของคุณและอนุญาตให้คุณรันคำสั่ง Oxen CLI
oxen status
oxen add images/
oxen commit -m "added images"
oxen push origin main
หากต้องการเรียกใช้ Oxen Server ในเครื่อง ให้สร้างไฟล์กำหนดค่าและโทเค็นเพื่อตรวจสอบสิทธิ์ผู้ใช้
./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 คุณสามารถใช้เกล็ดเพื่อสร้างและรันเซิร์ฟเวอร์ได้ สิ่งนี้จะติดตั้งและกำหนดค่าการขึ้นต่อกันของ build toolchain ที่จำเป็นสำหรับ Linux และ macOS โดยอัตโนมัติ
nix build .#oxen-server
nix build .#oxen-cli
nix build .#liboxen
nix run .#oxen-server -- start
nix run .#oxen-cli -- init
วิธีพัฒนาด้วย toolchain มาตรฐานสนิมในเชลล์ Nix dev:
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 dir และไม่ทำซ้ำใน "พื้นที่ทำงานภายในเครื่อง"
เซิร์ฟเวอร์มีค่าเริ่มต้นเป็น 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 up -d reverse-proxy
docker-compose up -d --scale oxen=4 --no-recreate