ต้องการเฟรมเวิร์กที่รองรับการเรียนรู้แบบรวมศูนย์บน Edge ในเบราว์เซอร์เดสก์ท็อป ผสานรวมกับแอปมือถือได้ดี มีประสิทธิภาพ และรักษาความเป็นส่วนตัวหรือไม่ ยินดีต้อนรับสู่ XayNet ซึ่งเขียนด้วยภาษา Rust ทั้งหมด!
กรอบงานสำหรับการเรียนรู้ของเครื่อง - รวมถึงกรอบงานสำหรับการเรียนรู้แบบรวมศูนย์ - มีอยู่แล้ว โดยทั่วไปเฟรมเวิร์กเหล่านี้อำนวยความสะดวกในการเรียนรู้แบบรวมศูนย์สำหรับกรณีการใช้งานข้ามไซโล ตัวอย่างเช่น ในการเรียนรู้ร่วมกันในโรงพยาบาลจำนวนจำกัด หรือตัวอย่างเช่น ในธนาคารหลายแห่งที่ทำงานในกรณีการใช้งานทั่วไปโดยไม่จำเป็นต้องแบ่งปันข้อมูลที่มีค่าและละเอียดอ่อน
พื้นที่เก็บข้อมูลนี้มุ่งเน้นไปที่การเรียนรู้แบบรวมศูนย์ข้ามอุปกรณ์แบบสวมหน้ากาก เพื่อเปิดใช้งานการประสานการเรียนรู้ของเครื่องจักรในอุปกรณ์ Edge ที่ใช้พลังงานต่ำหลายล้านเครื่อง เช่น สมาร์ทโฟนหรือแม้แต่รถยนต์ ด้วยการทำเช่นนี้ เราหวังว่าจะเพิ่มความเร็วและขอบเขตของการนำการเรียนรู้แบบรวมศูนย์มาใช้ในทางปฏิบัติ และโดยเฉพาะอย่างยิ่งให้การปกป้องข้อมูลผู้ใช้ปลายทาง ข้อมูลทั้งหมดยังคงอยู่ในพื้นที่ส่วนตัวในพื้นที่ โดยมีเพียงโมเดล AI ที่เข้ารหัสเท่านั้นที่ได้รับการรวบรวมโดยอัตโนมัติและแบบอะซิงโครนัส ดังนั้นเราจึงมอบโซลูชั่นสำหรับปัญหาความเป็นส่วนตัวของ AI และเชื่อมช่องว่างที่มักเกิดขึ้นระหว่างความเป็นส่วนตัวและความสะดวกสบาย ลองนึกภาพผู้ช่วยเสียงเพื่อเรียนรู้คำศัพท์ใหม่โดยตรงในระดับอุปกรณ์และแบ่งปันความรู้นี้กับอินสแตนซ์อื่นๆ ทั้งหมด โดยไม่ต้องบันทึกและรวบรวมการป้อนข้อมูลด้วยเสียงของคุณจากส่วนกลาง หรือลองคิดถึงเครื่องมือค้นหาที่เรียนรู้ที่จะปรับแต่งผลการค้นหาในแบบของคุณโดยไม่ต้องรวบรวมคำค้นหาที่ละเอียดอ่อนที่มักมาจากส่วนกลาง... มีกรณีการใช้งานดังกล่าวหลายพันรายการที่ในปัจจุบันยังคงแลกเปลี่ยนความเป็นส่วนตัวเพื่อความสะดวก เราคิดว่าไม่ควรเป็นเช่นนั้น และเราต้องการเสนอทางเลือกอื่นเพื่อเอาชนะภาวะที่กลืนไม่เข้าคายไม่ออกนี้
โดยสรุปแล้ว เรามอบ:
กรอบงานการเรียนรู้แบบรวมศูนย์ของเราไม่ได้เป็นเพียงกรอบงานสำหรับการเรียนรู้ของเครื่องเท่านั้น แต่สนับสนุนการรวมศูนย์ของการเรียนรู้ของเครื่องที่เกิดขึ้นบนอุปกรณ์ที่อาจต่างกันและในกรณีที่การใช้งานเกี่ยวข้องกับอุปกรณ์ดังกล่าวจำนวนมาก
ภาษาโปรแกรมที่ใช้เขียนเฟรมเวิร์กนี้จึงควรให้การสนับสนุนอย่างยิ่งต่อสิ่งต่อไปนี้:
Rust เป็นหนึ่งในตัวเลือกไม่กี่ภาษาของภาษาโปรแกรมสมัยใหม่ที่ตรงตามข้อกำหนดเหล่านี้:
สนิมc 1.51.0
มีหลายวิธีในการเรียกใช้แบ็กเอนด์: ผ่านนักเทียบท่า หรือโดยการปรับใช้กับคลัสเตอร์ Kubernetes หรือโดยการคอมไพล์โค้ดและเรียกใช้ไบนารีด้วยตนเอง
docker
และ docker-compose
) และ/หรือการตั้งค่าการทำงาน (หากคุณตัดสินใจคอมไพล์โค้ด Rust และรันไบนารี่ด้วยตนเอง)บันทึก:
ด้วย Xaynet v0.11
ผู้ประสานงานจำเป็นต้องเชื่อมต่อกับอินสแตนซ์ Redis เพื่อบันทึกสถานะ
อย่าเชื่อมต่อผู้ประสานงานกับอินสแตนซ์ Redis ที่ใช้ในการผลิต!
เราขอแนะนำให้เชื่อมต่อผู้ประสานงานกับอินสแตนซ์ Redis ของตนเอง เราได้ทุ่มเทเวลาอย่างมากเพื่อให้แน่ใจว่าผู้ประสานงานจะลบเฉพาะข้อมูลของตนเองเท่านั้น แต่ในสถานะการพัฒนาปัจจุบัน เราไม่สามารถรับประกันได้ว่าจะเป็นเช่นนี้ตลอดไป
ความสะดวกในการใช้การตั้งค่านักเทียบท่าคือไม่จำเป็นต้องตั้งค่าสภาพแวดล้อม Rust ที่ใช้งานได้บนระบบของคุณ เนื่องจากทุกอย่างเสร็จสิ้นภายในคอนเทนเนอร์
ภาพ Docker ของรุ่นล่าสุดมีให้บน Docker Hub
คุณสามารถลองใช้ค่าเริ่มต้น configs/docker-dev.toml
ได้โดยการเรียกใช้:
Xaynet ต่ำกว่า v0.11
docker run -v ${PWD} /configs/docker-dev.toml:/app/config.toml -p 8081:8081 xaynetwork/xaynet:v0.10.0 /app/coordinator -c /app/config.toml
ไซเน็ต v0.11+
# don't forget to adjust the Redis url in configs/docker-dev.toml
docker run -v ${PWD} /configs/docker-dev.toml:/app/config.toml -p 8081:8081 xaynetwork/xaynet:v0.11.0
อิมเมจนักเทียบท่ามีรุ่น Release ของผู้ประสานงานที่ไม่มีคุณสมบัติเสริม
เริ่มต้นผู้ประสานงานโดยชี้ไปที่ไฟล์ docker/docker-compose.yml
มันหมุนโครงสร้างพื้นฐานทั้งหมดที่จำเป็นในการรันผู้ประสานงานด้วยคุณสมบัติเริ่มต้นหรือคุณสมบัติเสริม โปรดทราบว่าไฟล์นี้ใช้เพื่อการพัฒนาเท่านั้น
docker-compose -f docker/docker-compose.yml up --build
หากคุณต้องการ คุณสามารถสร้างรุ่นผู้ประสานงานที่ได้รับการปรับให้เหมาะสมแล้ว แต่โปรดจำไว้ว่าการคอมไพล์จะช้าลง
docker build --build-arg RELEASE_BUILD=1 -f ./docker/Dockerfile .
คุณลักษณะทางเลือกสามารถระบุได้ผ่านอาร์กิวเมนต์ build COORDINATOR_FEATURES
docker build --build-arg COORDINATOR_FEATURES=tls,metrics -f ./docker/Dockerfile .
หากต้องการปรับใช้อินสแตนซ์ของผู้ประสานงานกับคลัสเตอร์ Kubernetes ของคุณ ให้ใช้ไฟล์ Manifest ที่อยู่ในโฟลเดอร์ k8s/coordinator
รายการต้องอาศัย kustomize
ที่จะสร้าง ( kustomize
สนับสนุน kubectl
อย่างเป็นทางการตั้งแต่เวอร์ชัน 1.14) เราขอแนะนำให้คุณอ่านไฟล์ Manifest อย่างละเอียดและปรับเปลี่ยนตามการตั้งค่าของคุณเอง (เนมสเปซ ทางเข้า ฯลฯ)
อย่าลืมตรวจสอบ (และปรับหากจำเป็น) การกำหนดค่าเริ่มต้นสำหรับผู้ประสานงาน ซึ่งมีอยู่ที่ k8s/coordinator/development/config.toml
โปรดปรับโดเมนที่ใช้ในไฟล์ k8s/coordinator/development/ingress.yaml
เพื่อให้ตรงกับความต้องการของคุณ (คุณสามารถข้าม ingress
ทั้งหมดได้ เพียงตรวจสอบให้แน่ใจว่าคุณลบการอ้างอิงออกจาก k8s/coordinator/development/kustomization.yaml
)
โปรดทราบว่าการกำหนด ingress
ที่แสดงใน k8s/coordinator/development/ingress.yaml
อาศัยทรัพยากรที่ไม่มีอยู่ในที่เก็บนี้ เนื่องจากลักษณะที่ละเอียดอ่อน (เช่น คีย์ TLS และใบรับรอง)
หากต้องการตรวจสอบรายการที่สร้างขึ้น ให้รัน:
kubectl kustomize k8s/coordinator/development
วิธีนำไปใช้:
kubectl apply -k k8s/coordinator/development
ในกรณีที่คุณไม่ได้เปิดเผยผู้ประสานงานของคุณผ่านทาง ingress
คุณยังสามารถเข้าถึงผู้ประสานงานได้โดยใช้พอร์ตฟอร์เวิร์ด ตัวอย่างด้านล่างสร้างการส่งต่อพอร์ตที่พอร์ต 8081
โดยสมมติว่าพ็อดผู้ประสานงานยังคงใช้ป้ายกำกับ app=coordinator
:
kubectl port-forward $( kubectl get pods -l " app=coordinator " -o jsonpath= " {.items[0].metadata.name} " ) 8081
ผู้ประสานงานที่ไม่มีคุณสมบัติเสริมสามารถสร้างและเริ่มต้นด้วย:
cd rust
cargo run --bin coordinator -- -c ../configs/config.toml
ตัวอย่างสามารถพบได้ภายใต้rust/examples/ ใช้โมเดลจำลองแต่สามารถใช้งานเครือข่ายได้ จึงเป็นจุดเริ่มต้นที่ดีในการตรวจสอบการเชื่อมต่อกับผู้ประสานงาน
test-drive
ตรวจสอบให้แน่ใจว่าคุณมีอินสแตนซ์ของผู้ประสานงานที่ทำงานอยู่ และไคลเอนต์ที่คุณวางไข่ด้วยคำสั่งด้านล่างนี้สามารถเข้าถึงได้ผ่านเครือข่าย
นี่คือตัวอย่างเกี่ยวกับวิธีการเริ่มต้นผู้เข้าร่วม 20
คนที่จะเชื่อมต่อกับผู้ประสานงานที่ทำงานบน 127.0.0.1:8081
:
cd rust
RUST_LOG=info cargo run --example test-drive -- -n 20 -u http://127.0.0.1:8081
สำหรับรายละเอียดเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการเรียกใช้ตัวอย่าง โปรดดูคู่มือการเริ่มต้นใช้งานที่แนบมาด้วยภายใต้rust/xaynet-server/src/examples.rs
หากคุณประสบปัญหาในการดำเนินโครงการ โปรดติดต่อเราโดยเปิดปัญหาและอธิบายการตั้งค่าของคุณและปัญหาที่คุณกำลังเผชิญ