GPU'larla tutarlı bir test ortamı oluşturmak bekleniyor. Aşağıdaki adımları uygulayarak istemci taraflı, tarayıcı tabanlı yapay zeka modellerini aynı zamanda ölçeklenebilir, otomatikleştirilebilir ve güncel kurulumu için bir nedenden yararlanabilirsiniz.
Bu durumda tarayıcı, donanım desteğine sahip gerçek bir Chrome tarayıcıdır. en iyi uygulamaları gözden geçiriyorum.
Web yapay zekası, web oyunu veya grafik geliştiricisi olun ya da kendinizi Web Yapay Zeka model testiyle ilgileniyorsanız bu kılavuz sizin için.
1. Adım: Yeni bir Google Colab not defteri oluşturun
. 1. Yeni bir Colab not defteri oluşturmak için colab.new adresine gidin. Şekil 1'e benzer bir görünümde olacaktır. 2. Google Hesabınızda oturum açmak için istemi uygulayın. .2. Adım: T4 GPU özellikli bir sunucuya bağlanın
- Not defterinin sağ üst tarafına yakın yerdeki Bağlan'ı tıklayın.
- Çalışma zamanı türünü değiştir'i seçin: 'nı inceleyin.
- Kalıcı pencerede donanım hızlandırıcınız olarak T4 GPU'yu seçin. Bağlandığınızda Colab, NVIDIA T4 GPU ekli bir Linux örneği kullanır. ziyaret edin.
- Kaydet'i tıklayın.
- Çalışma zamanınıza bağlanmak için Connect (Bağlan) düğmesini tıklayın. Bir süre sonra düğmesinde, RAM ve disk kullanımı grafikleriyle birlikte yeşil bir onay işareti görüntülenir. Bu, sunucunun gerekli donanım.
Tebrikler, GPU eklenmiş bir sunucu oluşturdunuz.
3. Adım: Doğru sürücüleri ve bağımlılıkları yükleyin
Aşağıdaki iki satırlık kodu kopyalayıp sitenizin ilk kod hücresine yapıştırın: not defterine yerleştireceğiz. Colab ortamında, komut satırı yürütmesinin başına ünlem işareti.
!git clone https://github.com/jasonmayes/headless-chrome-nvidia-t4-gpu-support.git !cd headless-chrome-nvidia-t4-gpu-support && chmod +x scriptyMcScriptFace.sh && ./scriptyMcScriptFace.sh
- Komut dosyasını GitHub'da inceleyebilirsiniz. komut dosyasının çalıştırdığı ham komut satırı kodunu görebilirsiniz.
# Update, install correct drivers, and remove the old ones. apt-get install -y vulkan-tools libnvidia-gl-525 # Verify NVIDIA drivers can see the T4 GPU and that vulkan is working correctly. nvidia-smi vulkaninfo --summary # Now install latest version of Node.js npm install -g n n lts node --version npm --version # Next install Chrome stable curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/googlechrom-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrom-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list sudo apt update sudo apt install -y google-chrome-stable # Start dbus to avoid warnings by Chrome later. export DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket" /etc/init.d/dbus start
Şu hücreyi eklemek için hücrenin yanındaki
'i tıklayın: kodu yürütür.Kodun çalıştırılması tamamlandıktan sonra
nvidia-smi
ürününün bir dosya yazdırdığını doğrulayın GPU'nun gerçekten olduğunu doğrulamak için aşağıdaki ekran görüntüsüne benzer eklenir ve sunucunuzda tanınacaktır. Önceki bölüme gitmeniz gerekebilir kontrol edin.
4. adım: Gözetimsiz Chrome'u kullanın ve otomatikleştirin
- Yeni bir kod eklemek için Kod düğmesini tıklayın kod hücresi.
- Ardından
(veya doğrudan
google-chrome-stable
öğesini komut satırından). Aşağıda her ikisine de ilişkin örnekler verilmiştir.
A Bölümü: Gözetimsiz Chrome'u doğrudan komut satırında kullanma
# Directly call Chrome to dump a PDF of WebGPU testing page
# and store it in /content/gpu.pdf
!google-chrome-stable \
--no-sandbox \
--headless=new \
--use-angle=vulkan \
--enable-features=Vulkan \
--disable-vulkan-surface \
--enable-unsafe-webgpu \
--print-to-pdf=/content/gpu.pdf https://webgpureport.org
Örnekte, sonuçta elde edilen PDF yakalaması /content/gpu.pdf
içinde depolandı. Alıcı:
dosyayı görüntülemek için içeriği genişletin.
Ardından PDF'yi indirmek için simgesini tıklayın
dosyasını yerel makinenize yükleyin.
B Bölümü: Chrome'u Puppeteer ile Komuta Etme
Gözetimsiz Chrome'u kontrol etmek için Puppeteer'ı kullanan minimalist bir örnek sunduk. çalıştırılabilir.
# Call example node.js project to perform any task you want by passing
# a URL as a parameter
!node headless-chrome-nvidia-t4-gpu-support/examples/puppeteer/jPuppet.js chrome://gpu
jPuppet örneğinde, bir veritabanı oluşturmak için Node.js komut dosyasını ekran görüntüsüdür. Peki bu nasıl çalışır? Node.js ile ilgili bu kılavuza göz atın kod jPuppet.js dosyasına ait veriler yer alır.
jPuppet.js Düğüm kodu dökümü
İlk olarak Puppeteer'ı içe aktarın. Bu şekilde Chrome'u Node.js ile uzaktan kontrol edebilirsiniz:
import puppeteer from 'puppeteer';
Ardından, Node uygulamasına hangi komut satırı bağımsız değişkenlerinin aktarıldığını kontrol edin. Gidilecek bir URL'yi temsil eden üçüncü bağımsız değişkenin ayarlandığından emin olun. Siz İlk iki bağımsız değişken Düğüm'ü çağırdığından, üçüncü bağımsız değişkeni burada incelemeniz gerekir çalıştırdığımız komut dosyası için de geçerlidir. 3. öğe aslında 1. öğe parametresini kullanabilirsiniz:
const url = process.argv[2];
if (!url) {
throw "Please provide a URL as the first argument";
}
Şimdi runWebpage()
adlı eşzamansız bir işlev tanımlayın. Bu işlem bir tarayıcı oluşturur.
çalıştırmak için komut satırı bağımsız değişkenleriyle yapılandırılan nesne
açıklandığı gibi WebGL ve WebGPU'nun çalışmasını sağlamamız için gereken şekilde
WebGPU ve WebGL desteğini etkinleştirin.
async function runWebpage() {
const browser = await puppeteer.launch({
headless: 'new',
args: [
'--no-sandbox',
'--headless=new',
'--use-angle=vulkan',
'--enable-features=Vulkan',
'--disable-vulkan-surface',
'--enable-unsafe-webgpu'
]
});
Daha sonra herhangi bir URL'yi ziyaret etmek için kullanabileceğiniz yeni bir tarayıcı sayfası nesnesi oluşturun:
const page = await browser.newPage();
Ardından, web sayfası açıldığında console.log
etkinliklerini dinlemek için bir etkinlik işleyici ekleyin
JavaScript'i çalıştırır. Bu, Node komut satırında mesajları günlüğe kaydetmenizi sağlar
ve ayrıca konsol metnini inceleyerek (bu örnekte
captureAndEnd
) içerir.
Düğüm. Bu seçenek, önce biraz çalışma yapılması gereken web sayfaları için yararlıdır
ancak ekran görüntüsü alınabiliyor. Ancak bunun için
birkaç adım var.
page.on('console', async function(msg) {
console.log(msg.text());
if (msg.text() === 'captureAndEnd') {
await page.screenshot({ path: '/content/screenshotEnd.png' });
await browser.close();
}
});
Son olarak, sayfaya belirtilen URL'yi ziyaret etmesini söyleyin ve ilk ekran görüntüsünü alın.
chrome://gpu
adlı dosyanın ekran görüntüsünü almayı seçerseniz tarayıcıyı kapatabilirsiniz
oturumu hemen başlatabilirsiniz, çünkü bu sayfa
kendi kodunuz tarafından kontrol edilmez.
await page.goto(url, { waitUntil: 'networkidle2' });
await page.screenshot({path: '/content/screenshot.png'});
if (url === 'chrome://gpu') {
await browser.close();
}
}
runWebpage();
package.json dosyasını değiştir
Videonun başında bir içe aktarma ifadesi kullandığımızı fark etmiş olabilirsiniz.
jPuppet.js
dosyası yükleyin. package.json
, tür değerlerini module
olarak ayarlamalıdır veya
modülün geçersiz olduğuna dair bir hata alırsınız.
{
"dependencies": {
"puppeteer": "*"
},
"name": "content",
"version": "1.0.0",
"main": "jPuppet.js",
"devDependencies": {},
"keywords": [],
"type": "module",
"description": "Node.js Puppeteer application to interface with headless Chrome with GPU support to capture screenshots and get console output from target webpage"
}
Hepsi bu kadar. Puppeteer kullanmak, arayüz oluşturmak Chrome'da programlı olarak kullanabilirsiniz.
Başarılı
Artık TensorFlow.js Moda MNIST sınıflandırıcısı istemci tarafı ile resimdeki bir çift pantolonu doğru şekilde tanıyabiliyor. JavaScript'i kullanarak tarayıcıda işlemeye yarar.
Bunu, makine öğreniminden GPU'ya dayalı tüm istemci taraflı iş yükleri için kullanabilirsiniz test edilmesine yardımcı oldu.
Kaynaklar
GitHub kod deposuna yıldız ekleme gelecek güncellemeleri alabilirsiniz.