Соңғы бірнеше жыл ChatGPT, Google Gemini, Microsoft Copilot және т.б. сияқты орталықтандырылған серверге негізделген AI үлгілері үшін ерекше болды. Мұндай AI үлгілері көптеген аспектілерді өзгерткені сөзсіз. Бірақ екінші жағынан, олардың кейбір кемшіліктері бар. ChatGPT-тің бірнеше үзілістері туралы сіз де естіген шығарсыз.
Орталықтандырылған серверге негізделген модельдер бір сәтсіздік нүктесінің үлкен қаупіне ұшырайды. Бірақ қазір уақыт өзгерді. Блокчейн технологиясы сонымен қатар көптеген салаларда, соның ішінде жасанды интеллектте (AI) революция жасайды.
Dfinity әзірлеген Интернет-компьютерлік протокол (ICP) AI қолданбаларына толық орталықтандырылмаған бұлттық инфрақұрылымда жұмыс істеуге мүмкіндік беру арқылы AI орталықсыздандыру үшін жұмыс істейді. Бірегей нәрсе, ICP AI үлгілері мен қызметтерін тәуелсіз деректер орталықтары желісінде орналастыруға мүмкіндік береді. Орталықсыздандырудың бұл түрі AI операцияларының мөлдір, цензураға төзімді және бір сәтсіздікке бейімділігін қамтамасыз етеді.
Бұл мақала ICP негізіндегі бетті тану DApp практикалық сынақтан айырмашылығы. Біз AI орталықсыздандырудың объективті түрде қалай жұмыс істейтінін әр қадамның нәзік демонстрациялары арқылы тексереміз. Біз күрделі техникалық түсініктерді түсінуге оңай оқулықтарға бөлуге тырыстық, сондықтан бастайық.
Барлық жобаны әзірлеу және тестілеу процестері Windows негізіндегі құрылғыда жүзеге асырылды, сондықтан біз мұнда Linux ішкі жүйесін жасаймыз, өйткені көптеген ICP әзірлеу құралдары мен сценарийлері Linux негізіндегі орталар үшін оңтайландырылған.
📥Алғышарттар:
Операциялық жүйе : Linux жүйесіне арналған Windows ішкі жүйесі (WSL) орнатылған Windows. Орнату үшін осы нұсқаулықты қараңыз.
Білім :
JavaScript , React.js , Rust және WebAssembly туралы негізгі түсінік .
Веб-әзірлеу тұжырымдамаларымен танысу.
Құралдар :
📥Дамыту ортасын орнату:
sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"
👉Орнатуды растау үшін:
dfx –version
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env
👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:
rustc –version
3. Node.js файлын келесі пәрменді орындау арқылы орнатыңыз:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs
👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:
node -v npm -v
git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .
👉Орнатуды тексеру үшін келесі әрекеттерді орындаңыз:
echo $PATH wasi2ic –help
cargo install wasm-opt
📥Жобаны клондау:
Біз тестілеу мақсатында жобаның GitHub репозиторийін пайдаланамыз. Сіз олардың репозиторийін осы жерден тексере аласыз.
1. Репозиторийді клондап, бетті тану жобасына өтіңіз:
git clone https://github.com/dfinity/examples.git cd examples/rust/face-recognition
Ескертпе: Linux ішкі жүйе файлдарына File Explorer бағдарламасында \\wsl$
іздеу немесе Windows ОЖ жүйесіндегі тікелей іздеу мүмкіндігі арқылы қол жеткізуге болады.
📥Бетті тану үлгілерін жүктеп алыңыз
Бетті анықтау үлгісі кескіндегі беттерді анықтау үшін пайдаланылады. Жүгіру:
./download-face-detection-model.sh
PyTorch
және facenet-pytorch
арқылы үлгіні ONNX пішімінде экспорттауыңыз керек. Осы Python кітапханаларын орнату арқылы бастаңыз:
pip install torch facenet-pytorch onnx
Ескертпе: Егер ішкі жүйеңізде Python орнатылмаған болса, Python және pip бағдарламаларын мына жерден орнатып көріңіз: https://packaging.python.org/en/latest/tutorials/installing-packages/ .
Python файлында немесе қабығында келесіні іске қосыңыз: Терминалға python3 деп теріп, келесі кодты іске қосыңыз. Орындағаннан кейін exit() деп теріңіз.
import torch import facenet_pytorch resnet = facenet_pytorch.InceptionResnetV1(pretrained='vggface2').eval() input = torch.randn(1, 3, 160, 160) torch.onnx.export(resnet, input, "face-recognition.onnx", verbose=False, opset_version=11)
Бұл face-recognition.onnx
файлын жасайды. Оны репозиторийдің түбіріне көшіріңіз.
📥Құрылыс
Енді жобаны құру уақыты келді. Жүгіру:
dfx start --background dfx deploy
Егер бәрі дұрыс болса, терминалда Frontend URL мекенжайын көре аласыз.
Ескертпе: Клиенттің болмауына байланысты қандай да бір қатеге тап болсаңыз, npm арқылы ғаламдық түрде webpack
және webpack-cli
орнатып көріңіз:
sudo npm install -g webpack webpack-cli
Және, жергілікті тәуелділіктер:
npm install
📥Канистрді жасаңыз, іске қосыңыз:
dfx canister create backend
Терминалда келесі хабарламаны көруге болады.
👉Енді канистр серверінің күйін тексеруге болады:
dfx canister status backend
Терминалда осындай нәрсені көруге болады.
📥Модельдерді жүктеп салу
AI үлгілері әдетте үлкен болғандықтан. Оларды смарт келісімшарттың WebAssembly (Wasm) екілік жүйесіне тікелей енгізу мүмкін емес. Оның орнына бұл үлгілерді бөлек жүктеп салу керек. Мұны шешу үшін DecideAI модельдерді біртіндеп жүктеп салу құралын әзірледі. Құралды мына жерден таба аласыз: ic-file-uploader .
👉Құралды орнату үшін келесі пәрменді пайдаланыңыз:
cargo install ic-file-uploader
Орнатылғаннан кейін үлгілерді жүктеп салу үшін терминалда ./upload-models-to-canister.sh
іске қосу арқылы upload-models-to-canister.sh
сценарийін пайдалануға болады. Бұл сценарий келесі қадамдарды орындайды:
dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes
ic-file-uploader backend append_face_detection_model_bytes version-RFB-320.onnx ic-file-uploader backend append_face_recognition_model_bytes face-recognition.onnx
dfx canister call backend setup_models
Енді dfx deploy
пәрмені кезінде терминалда алған URL мекенжайын пайдалану арқылы Frontendпен өзара әрекеттесуге болады (1-сурет)
ICP логотипін басу арқылы суретті жүктеп салғаннан кейін, модельді үйрету үшін « Адам қосу » түймесін басу арқылы адамның атын қосып көріңіз.
Ол беттегі автоматты тіктөртбұрыш белгісі бар бетті анықтайды. Атты орнатқаннан кейін, ол келесідей сәтті қосу туралы хабарды көрсетеді:
Жасанды интеллект сіз бетке қойған атауды есте сақтайды, осылайша ол бір адамның әртүрлі фотосуреттерінің бет-әлпетін анықтайтынын тексере аласыз. Мұнда Никола Тесланың әртүрлі фотосуреттері түсірілген. Бетті анықтауға арналған басқа фотосуретті жүктеп салу үшін бетті қайта жүктеп, « Тану » опциясын басыңыз. Көрейік; ол Никола Тесланың бет-бейнесін бастапқыдан сәл айырмашылығымен сәтті анықтады.
Міне, модельге Никола Тесланың AI-генерацияланған фотосуреті ұсынылған және таңқаларлық, ол бетті дәл анықтады, мына жерден көрейік:
Ол ICP Face Recognizing DApp тамаша жұмыс істеп тұрғанын сәтті растады, өйткені ол Никола Тесланың беттерін сәтті анықтады. Сіз оны өзіңіз көріңіз.
Ол тестілеу мақсатында болғандықтан, UI және мүмкіндіктер шектеулі. Бет тану мақсаттары үшін ICP жүйесінде өндіріске дайын dApp құруға асықсаңыз, қосымша мүмкіндіктер мен қызметтерді қосуға болады. Код мысалдарымен келесі мүмкіндіктерді қолданып көруге болады. Сіздің талаптарыңызға сәйкес кодтарды қосу немесе теңшеу керек екенін ескеріңіз.
📥Міне, сізге бірнеше кеңестер:
Бұл мүмкіндікті осы dApp қолданбасына қоссаңыз, тек тіркелген пайдаланушылар DApp қолданбасына кіре алады. Интернет идентификациясы арқылы аутентификацияны қалай қосуға болатыны осында. Негізгі бетте Internet Identity кіру түймешігін қосу арқылы Internet Identity біріктіруге болады. Пайдаланушы жүйеге кіргеннен кейін жекелендірілген бақылау тақтасын көрсетіңіз.
Қалай қосуға болады:
👉Internet Identity тәуелділіктерін орнату:
npm install @dfinity/agent @dfinity/auth-client
👉Түпнұсқалықты растауды қосу үшін келесі кодты фронтоныңызға қосыңыз:
import { AuthClient } from "@dfinity/auth-client"; async function init() { const authClient = await AuthClient.create(); if (await authClient.isAuthenticated()) { // Display dashboard or personalized content } else { authClient.login({ identityProvider: "https://identity.ic0.app/#authorize", onSuccess: () => { // Once authenticated, display personalized features }, }); } } init();
👉Жүйеге кіргеннен кейін пайдаланушы танылған беттердің тарихын немесе басқа жеке деректерін көре алады.
Пайдаланушыларға бетті анықтау үшін суреттерді сүйреп апаруға мүмкіндік беру арқылы кескінді жүктеп салу функциясын және тәжірибені тегістеңіз.
Қалай қосуға болады :
👉HTML5-тің сүйреп апару функциясын пайдаланыңыз:
<div id="drop-area"> <p>Drag and drop an image here or click to select</p> <input type="file" id="file-input" hidden /> </div>
👉Сүйреп апару әрекетін өңдеу үшін JavaScript қосыңыз:
const dropArea = document.getElementById("drop-area"); dropArea.addEventListener("dragover", (event) => { event.preventDefault(); }); dropArea.addEventListener("drop", (event) => { event.preventDefault(); const files = event.dataTransfer.files; // Process the uploaded image });
👉Оның бетті анықтау функциясымен біркелкі үйлесетініне көз жеткізіңіз.
Жүйе кескінді өңдеп жатқаны туралы пайдаланушыларға хабарлау үшін кескін жүктеп салынған кезде орындалу жолағын көрсету тартымды мүмкіндік болады.
Қалай қосуға болады:
👉Қарапайым HTML орындалу барысы жолағын пайдаланыңыз:
<div id="progress-bar"> <div id="progress-fill" style="width: 0%;"></div> </div>
👉Суретті өңдеу кезінде орындалу барысын динамикалық түрде жаңартыңыз:
const progressFill = document.getElementById("progress-fill"); let progress = 0; const interval = setInterval(() => { progress += 10; progressFill.style.width = `${progress}%`; if (progress === 100) { clearInterval(interval); } }, 100); // Simulate progress every 100ms
Модальды немесе тост хабарландыруы арқылы бетті тану аяқталғаннан кейін нақты уақыттағы хабарландыруларды қамтамасыз ету мүмкіндігін қосуға болады.
Қалай қосуға болады :
👉Сіз Toastr сияқты жеңіл кітапхананы немесе реттелетін тост хабарландыруларын пайдалана аласыз.
<div id="notification" class="hidden">Face Recognition Complete!</div>
👉JavaScript-те сервер нәтижені қайтарған кезде хабарландыруды көрсетіңіз:
function showNotification(message) { const notification = document.getElementById("notification"); notification.innerHTML = message; notification.classList.remove("hidden"); setTimeout(() => { notification.classList.add("hidden"); }, 3000); // Hide notification after 3 seconds } // Call this after face recognition is done showNotification("Face detected and recognized!");
📥Соңғы қадамдар: қайта құру және орналастыру
Осы жаңа мүмкіндіктерді енгізгеннен кейін:
👉Жобаны қайта құру:
dfx build
👉Тест желісіне орналастыру: бұл негізгі желіге барар алдында алдымен сынақтан өту.
dfx deploy --network ic
Бұл демонстрациялық мақсатқа арналған бірнеше мысалдар мен идеялар. Сіз оларды өзіңіз сынай аласыз және түсініктеме бөлімінде үлгеріміңізді хабарлай аласыз. Сондай-ақ, сіз онымен ICP-де AI орталықсыздандыру үшін көп нәрсені жасай аласыз.
Біз ICP жүйесінде Face Recognizing DApp қолданбасын сәтті сынақтан өткіздік, бұл AI (DeAI) орталықсыздандырудың нақты әрекеті. Біздің тестілеуімізге сәйкес, DApp жауаптары жылдам болды және беттерді анықтау дәл болды. ICP бірегей инфрақұрылымы орталықтандырылған жүйелерге сүйенбестен бет-әлпетті тану сияқты күрделі тапсырмаларды орындауға көмектесе алады.
Ол қауіпсіздік пен құпиялылықты арттырып қана қоймайды, сонымен қатар орталықтандырылмаған AI (DeAI) қолданбаларының жылдам дамуы үшін әлеуетті көрсетеді. ICP дамуын жалғастыра отырып, үлкен үлгілерді қолдану және тізбекте AI қорытындысын орындау мүмкіндігі инновациялар үшін жаңа мүмкіндіктерді аша алады. Орталықтандырылмаған AI болашақта сенімді және ауқымды шешімдердің негізгі ойыншысы болады деп күтуге болады. Сондай-ақ әзірлеушілерде ICP-де көбірек өнімдер мен қызметтерді жасаудың жаңа мүмкіндіктері бар.