2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
पूर्वलेखात् वयं आविष्कृतवन्तः यत् बृहत् मॉडल्-सञ्चालने CPU-इत्यस्य संचालनाय उपयोगं कुर्वन् CPU-उपयोगः अतीव अधिकः भवति । अतः वयम् अत्र चिन्तयिष्यामः यत् यदि यन्त्रे GPU ग्राफिक्स् कार्ड् अस्ति तर्हि वयं कथं सदिश-क्रियासु ग्राफिक्स्-कार्डस्य लाभं गृहीत्वा यन्त्र-शिक्षण-सम्बद्धानि कार्याणि शीघ्रं सम्यक् च कर्तुं शक्नुमः
वयं जानीमः यत् वर्तमानस्य मुख्यधारायां ग्राफिक्स् कार्ड्स् ये यन्त्रशिक्षणस्य समर्थनं कुर्वन्ति ते Nvida श्रृङ्खला ग्राफिक्स् कार्ड्स् सन्ति, ये सामान्यतया N कार्ड्स् इति नाम्ना प्रसिद्धाः सन्ति तथापि Mac मशीनेषु AMD श्रृङ्खला ग्राफिक्स् कार्ड्स् सामान्यतया एकीकृताः भवन्ति द्वयोः भिन्नयोः हार्डवेयर-निर्देशसमूहयोः मध्ये अन्तरं भवति यत् उपरितनस्तरस्य भिन्न-भिन्न-कार्यन्वयन-प्रौद्योगिकीनां आवश्यकता भवति ।
परन्तु एएमडी ग्राफिक्स् कार्ड्स् इत्यत्र PlaidML प्रौद्योगिकी अस्ति, अस्य प्लग-इन् इत्यस्य माध्यमेन भिन्न-भिन्न-ग्राफिक्स् कार्ड्स् इत्यस्य भेदाः समाहिताः कर्तुं शक्यन्ते ।
PlaidML परियोजना पता: https://github.com/plaidml/plaidml
सम्प्रति, PlaidML पूर्वमेव Keras, ONNX, nGraph इत्यादीनां साधनानां समर्थनं करोति, भवान् प्रत्यक्षतया Keras इत्यस्य उपयोगं कृत्वा मॉडल् निर्मातुम् अर्हति, तथा च भवतां MacBook इत्येतत् GPU इत्येतत् सहजतया आह्वयितुं शक्नोति ।
PlaidML इति अस्य साधनस्य माध्यमेन NVIDIA, AMD अथवा Intel graphics cards इत्यस्य परवाहं विना गहनशिक्षणप्रशिक्षणं सुलभतया कर्तुं शक्यते ।
refer to : १.Mac PlaidML इत्यनेन सह सुदृढीकरणशिक्षणप्रशिक्षणं त्वरयति
अस्मिन् क्रियायां पारम्परिककेरास् एल्गोरिदमस्य कृते क्रमशः CPU तथा GPU इत्येतयोः उपरि गणनानां बहुपरिक्रमाः क्रियन्ते, आँकडानि च समयग्राहिणः भवन्ति तुलनात्मकं सांख्यिकीं कुरुत।
अस्मिन् समये प्रयुक्तस्य mac यन्त्रस्य सॉफ्टवेयर-हार्डवेयर-मापदण्डाः निम्नलिखितरूपेण सन्ति ।
यतः आश्रितसङ्कुलस्थापनप्रक्रियायां आदेशपरस्परक्रियायाः आवश्यकता भवति, अतः plaidML संकुलस्य संस्थापनं आदेशपङ्क्तौ क्रियते, कोडनिष्पादनं च jupyter इत्यत्र क्रियते
यतो हि jupyter इत्यस्य तान्त्रिकबिन्दवः भविष्यन्ति येषु आभासीवातावरणस्य उपयोगे कर्नलस्य निर्माणस्य आवश्यकता भवति, अतः तावत्पर्यन्तं सत्यापनार्थं मूलपायथन् वातावरणस्य प्रत्यक्षतया उपयोगः अनुशंसितः अस्ति ये छात्राः आभासीवातावरणे jupyter इत्यस्य विन्यासलक्षणं अवगच्छन्ति ते आभासीवातावरणे तस्य संचालनस्य प्रयासं कर्तुं शक्नुवन्ति ।
pip3 install plaidml-keras
लेखकेन plaidml-keras इत्यस्य नवीनतमं संस्करणं संस्थापयितुं pip3 install plaidml-keras इति आदेशस्य उपयोगानन्तरं, यत् 0.7.0 अस्ति, तदनन्तरं आरम्भक्रियां कुर्वन् अहं एकं दोषं प्राप्नोमि तदनन्तरं, तत् 0.6.4 यावत् न्यूनीकृतम् आसीत्, निष्पादनं च आसीत् सामान्य। परन्तु तदा अहं पुनः 0.7.0 इति संस्थापितवान् पुनः सामान्यम् आसीत् ।
plaidml in github
आदेशपङ्क्तौ निष्पादयन्तु
plaidml-setup
अन्तरक्रियाशीलसामग्री यथा भवति
(venv) tsingj@tsingjdeMacBook-Pro-2 ~ # plaidml-setup
PlaidML Setup (0.6.4)
Thanks for using PlaidML!
Some Notes:
* Bugs and other issues: https://github.com/plaidml/plaidml
* Questions: https://stackoverflow.com/questions/tagged/plaidml
* Say hello: https://groups.google.com/forum/#!forum/plaidml-dev
* PlaidML is licensed under the Apache License 2.0
Default Config Devices:
metal_intel(r)_uhd_graphics_630.0 : Intel(R) UHD Graphics 630 (Metal)
metal_amd_radeon_pro_5300m.0 : AMD Radeon Pro 5300M (Metal)
Experimental Config Devices:
llvm_cpu.0 : CPU (LLVM)
metal_intel(r)_uhd_graphics_630.0 : Intel(R) UHD Graphics 630 (Metal)
opencl_amd_radeon_pro_5300m_compute_engine.0 : AMD AMD Radeon Pro 5300M Compute Engine (OpenCL)
opencl_cpu.0 : Intel CPU (OpenCL)
opencl_intel_uhd_graphics_630.0 : Intel Inc. Intel(R) UHD Graphics 630 (OpenCL)
metal_amd_radeon_pro_5300m.0 : AMD Radeon Pro 5300M (Metal)
Using experimental devices can cause poor performance, crashes, and other nastiness.
Enable experimental device support? (y,n)[n]:
वर्तमानसमर्थितानि ग्राफिक्स् कार्ड्स् सूचीकृत्य पूर्वनिर्धारितरूपेण 2 समर्थितग्राफिक्स् कार्ड्स् अथवा प्रयोगात्मकचरणस्य सर्वेषां 6 समर्थितानां हार्डवेयर् मध्ये चयनं कुर्वन्तु ।
पूर्वनिर्धारितरूपेण समर्थितौ ग्राफिक्स् कार्ड् द्वौ द्रष्टुं शक्नुवन्ति, यत् प्रारम्भिकस्क्रीन्शॉट् मध्ये वास्तविकं ग्राफिक्स् कार्ड् द्वौ स्तः । परीक्षणस्थिरतायाः कृते प्रथमं N इति चित्वा Enter नुदन्तु ।
Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:
1 : metal_intel(r)_uhd_graphics_630.0
2 : metal_amd_radeon_pro_5300m.0
Default device? (1,2)[1]:1
Selected device:
metal_intel(r)_uhd_graphics_630.0
पूर्वनिर्धारितचयनितसेटिंग्स् कृते, अत्र वयं प्रथमं metal_intel®_uhd_graphics_630.0 पूर्वनिर्धारितयन्त्ररूपेण सेट् कुर्मः अवश्यं, अस्य उपकरणस्य प्रदर्शनं वस्तुतः तुल्यकालिकरूपेण दुर्बलम् अस्ति पश्चात् वयं metal_amd_radeon_pro_5300m.0 इत्यस्य पूर्वनिर्धारितयन्त्ररूपेण सेट् करिष्यामः तुलना।
१ लिखित्वा Enter नुदन्तु ।
Almost done. Multiplying some matrices...
Tile code:
function (B[X,Z], C[Z,Y]) -> (A) { A[x,y : X,Y] = +(B[x,z] * C[z,y]); }
Whew. That worked.
Save settings to /Users/tsingj/.plaidml? (y,n)[y]:y
Success!
विन्यासं पूर्णं कर्तुं पूर्वनिर्धारितविन्याससञ्चिकायां विन्याससूचनाः लिखितुं Enter नुदन्तु ।
अस्मिन् खण्डे jupyter इत्यस्य उपयोगः सरलं एल्गोरिदम् कोड् चालयितुं भवति तस्य समयः च गण्यते ।
#!/usr/bin/env python
import numpy as np
import os
import time
import keras
import keras.applications as kapp
from keras.datasets import cifar10
(x_train, y_train_cats), (x_test, y_test_cats) = cifar10.load_data()
batch_size = 8
x_train = x_train[:batch_size]
x_train = np.repeat(np.repeat(x_train, 7, axis=1), 7, axis=2)
ध्यानं कुर्वन्तु यत् अत्र पूर्वनिर्धारितं keral computing backend tenserflow इत्यस्य उपयोगं कर्तव्यम्, आउटपुट् पश्यन्तु
2024-07-11 14:36:02.753107: अहं tensorflow/core/platform/cpu_feature_guard.cc:210] इदं TensorFlow द्विचक्रिका प्रदर्शन-महत्त्वपूर्ण-सञ्चालनेषु उपलब्धानां CPU-निर्देशानां उपयोगाय अनुकूलितम् अस्ति ।
निम्नलिखितनिर्देशान् सक्षमीकरणाय: AVX2 FMA, अन्येषु कार्येषु, उपयुक्तैः संकलकध्वजैः सह TensorFlow पुनः निर्मायताम् ।
model = kapp.VGG19()
model.compile(optimizer='sgd', loss='categorical_crossentropy',metrics=['accuracy'])
print("Running initial batch (compiling tile program)")
y = model.predict(x=x_train, batch_size=batch_size)
प्रारम्भिकं बैचं चालयति (टाइल प्रोग्राम् संकलनम्)
१/१ ━━━━━━━━━━━━━━━━━━━━ १s १s/चरणम्
# Now start the clock and run 10 batchesprint("Timing inference...")
start = time.time()
for i in range(10):
y = model.predict(x=x_train, batch_size=batch_size)
print("Ran in {} seconds".format(time.time() - start))
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 891ms/step
0.9295139312744141 सेकेण्ड् मध्ये धावितम्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 923ms/step
१.८८९४७६०६०८६७३०९६ सेकेण्ड् मध्ये धावितम्
१/१ ━━━━━━━━━━━━━━━━━━━━ 1s 893ms/step
२.८१८४९२८८९४०४२९७ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 932ms/step
३.७८३१६६८८५३७५९७६६ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 892ms/step
४.७१३५८५८५३५७६६६ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 860ms/step
५.६०९८३५८६३११३४०३ सेकेण्ड् मध्ये धावितवान्
१/१ ━━━━━━━━━━━━━━━━━━━━ 1s 878ms/step
६.५१८२४५९३५४४००६३५ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 871ms/step
७.४२३१२८१२८०५१७५८ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 896ms/step
८.३५२५४३८३०८७१५८२ सेकेण्ड् मध्ये धावितवान्
1/1 ━━━━━━━━━━━━━━━━━━━━ 1s 902ms/step
९.२८८७९५९४८०२८५६४ सेकेण्ड् मध्ये धावितवान्
# Importing PlaidML. Make sure you follow this order
import plaidml.keras
plaidml.keras.install_backend()
import os
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
टीका:
1. यदा plaidml=0.7.0 संस्करणस्य उपयोगः भवति तदा plaidml.keras.install_backend() क्रियायां त्रुटिः भविष्यति ।
2. अस्मिन् चरणे plaidml इत्यस्य माध्यमेन केरास् आयाताः भविष्यन्ति, तथा च पृष्ठभूमिगणनाइञ्जिनं tenserflow इत्यस्य स्थाने plaidml इति सेट् भविष्यति ।
#!/usr/bin/env python
import numpy as np
import os
import time
import keras
import keras.applications as kapp
from keras.datasets import cifar10
(x_train, y_train_cats), (x_test, y_test_cats) = cifar10.load_data()
batch_size = 8
x_train = x_train[:batch_size]
x_train = np.repeat(np.repeat(x_train, 7, axis=1), 7, axis=2)
model = kapp.VGG19()
प्रथमे रन इत्यत्र ग्राफिक्स् कार्ड् सूचनां निर्गच्छतु
INFO:plaidml:उपकरणं उद्घाटयति “metal_intel®_uhd_graphics_630.0”
model.compile(optimizer='sgd', loss='categorical_crossentropy',metrics=['accuracy'])
print("Running initial batch (compiling tile program)")
y = model.predict(x=x_train, batch_size=batch_size)
प्रारम्भिकं बैचं चालयति (टाइल प्रोग्राम् संकलनम्)
यतः उत्पादनं द्रुततरं भवति, तस्मात् केवलं सामग्रीपङ्क्तिः मुद्रिता भवति ।
# Now start the clock and run 10 batchesprint("Timing inference...")
start = time.time()
for i in range(10):
y = model.predict(x=x_train, batch_size=batch_size)
print("Ran in {} seconds".format(time.time() - start))
४.२४१९१८०८७००५६१५ सेकेण्ड् मध्ये धावितवान्
८.४५२१४१०४६५२४०४८ सेकेण्ड् मध्ये धावितवान्
१२.६६५४११९४९१५७७१५ सेकेण्ड् मध्ये धावितवान्
१६.८४९९६८९१०२१७२८५ सेकेण्ड् मध्ये धावितवान्
२१.०२५७२०८३४७३२०५६ सेकेण्ड् मध्ये धावितम्
२५.२१२७६४०२४७३४४९७ सेकेण्ड् मध्ये धावितवान्
२९.४०५४७८९५४३१५१८६ सेकेण्ड् मध्ये धावितवान्
३३.५९४९७७१४०४२६६३६ सेकेण्ड् मध्ये धावितवान्
३७.७८८६४३८३६९७५१ सेकेण्ड् मध्ये धावितवान्
४१.९८१३६३०५८०९०२१ सेकेण्ड् मध्ये धावितवान्
plaidml-setup सेटिंग् मध्ये ग्राफिक्स् कार्ड् चयनस्य चरणे, ग्राफिक्स् कार्ड् metal_intel®_uhd_graphics_630.0 इत्यस्य चयनं न भवति, परन्तु metal_amd_radeon_pro_5300m.0 चयनितम् अस्ति
(venv) tsingj@tsingjdeMacBook-Pro-2 ~ # plaidml-setup
PlaidML Setup (0.6.4)
Thanks for using PlaidML!
Some Notes:
* Bugs and other issues: https://github.com/plaidml/plaidml
* Questions: https://stackoverflow.com/questions/tagged/plaidml
* Say hello: https://groups.google.com/forum/#!forum/plaidml-dev
* PlaidML is licensed under the Apache License 2.0
Default Config Devices:
metal_intel(r)_uhd_graphics_630.0 : Intel(R) UHD Graphics 630 (Metal)
metal_amd_radeon_pro_5300m.0 : AMD Radeon Pro 5300M (Metal)
Experimental Config Devices:
llvm_cpu.0 : CPU (LLVM)
metal_intel(r)_uhd_graphics_630.0 : Intel(R) UHD Graphics 630 (Metal)
opencl_amd_radeon_pro_5300m_compute_engine.0 : AMD AMD Radeon Pro 5300M Compute Engine (OpenCL)
opencl_cpu.0 : Intel CPU (OpenCL)
opencl_intel_uhd_graphics_630.0 : Intel Inc. Intel(R) UHD Graphics 630 (OpenCL)
metal_amd_radeon_pro_5300m.0 : AMD Radeon Pro 5300M (Metal)
Using experimental devices can cause poor performance, crashes, and other nastiness.
Enable experimental device support? (y,n)[n]:n
Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:
1 : metal_intel(r)_uhd_graphics_630.0
2 : metal_amd_radeon_pro_5300m.0
Default device? (1,2)[1]:2
Selected device:
metal_amd_radeon_pro_5300m.0
Almost done. Multiplying some matrices...
Tile code:
function (B[X,Z], C[Z,Y]) -> (A) { A[x,y : X,Y] = +(B[x,z] * C[z,y]); }
Whew. That worked.
Save settings to /Users/tsingj/.plaidml? (y,n)[y]:y
Success!
# Importing PlaidML. Make sure you follow this order
import plaidml.keras
plaidml.keras.install_backend()
import os
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
टीका:
1. यदा plaidml=0.7.0 संस्करणस्य उपयोगः भवति तदा plaidml.keras.install_backend() क्रियायां त्रुटिः भविष्यति ।
2. अस्मिन् चरणे plaidml इत्यस्य माध्यमेन केरास् आयाताः भविष्यन्ति, तथा च पृष्ठभूमिगणनाइञ्जिनं tenserflow इत्यस्य स्थाने plaidml इति सेट् भविष्यति ।
#!/usr/bin/env python
import numpy as np
import os
import time
import keras
import keras.applications as kapp
from keras.datasets import cifar10
(x_train, y_train_cats), (x_test, y_test_cats) = cifar10.load_data()
batch_size = 8
x_train = x_train[:batch_size]
x_train = np.repeat(np.repeat(x_train, 7, axis=1), 7, axis=2)
model = kapp.VGG19()
INFO:plaidml:उपकरणं “metal_amd_radeon_pro_5300m.0” उद्घाटयति।
ध्यानं कुर्वन्तु यत् अत्र प्रथमवारं ग्राफिक्स् कार्ड् सूचना प्रविष्टा अस्ति ।
model.compile(optimizer='sgd', loss='categorical_crossentropy',metrics=['accuracy'])
print("Running initial batch (compiling tile program)")
y = model.predict(x=x_train, batch_size=batch_size)
प्रारम्भिकं बैचं चालयति (टाइल प्रोग्राम् संकलनम्)
यतः उत्पादनं द्रुततरं भवति, तस्मात् केवलं सामग्रीपङ्क्तिः मुद्रिता भवति ।
# Now start the clock and run 10 batchesprint("Timing inference...")
start = time.time()
for i in range(10):
y = model.predict(x=x_train, batch_size=batch_size)
print("Ran in {} seconds".format(time.time() - start))
आउटपुट् पश्यन्तु
0.43606019020080566 सेकेण्ड् मध्ये चालितम्
0.8583459854125977 सेकेण्ड् मध्ये चालितम्
१.२७८७९११८९१९३७२५६ सेकेण्ड् मध्ये धावितवान्
१.७०१४३७२३४८७८५४ सेकेण्ड् मध्ये धावितवान्
२.१२३५०३२०८१६०४००४ सेकेण्ड् मध्ये धावितवान्
२.५४६४५८००५९०५१५१४ सेकेण्ड् मध्ये धावितवान्
२.९६७७९७९९४६१३६४७५ सेकेण्ड् मध्ये धावितवान्
३.३९००६४००१०८३३७४ सेकेण्ड् मध्ये धावितवान्
३.८११७७९९७५८९१११३३ सेकेण्ड् मध्ये धावितवान्
४.२३६९११०५८४२५९०३ सेकेण्ड् मध्ये धावितवान्
ग्राफिक्स् कार्ड् metal_intel®_uhd_graphics_630.0 इत्यस्य स्मृतिमूल्यं 1536 MB अस्ति यद्यपि ग्राफिक्स् कार्ड् इत्यस्य रूपेण, गणनासु तस्य कार्यक्षमता अस्य यन्त्रस्य 6-कोर CPU इव उत्तमं नास्ति
ग्राफिक्स् कार्ड् metal_amd_radeon_pro_5300m.0 इत्यस्य स्मृतिमूल्यं देशी CPU इत्यनेन सह तुलने अस्य कार्यक्षमता प्रायः १ गुणाधिकम् अस्ति ।
अस्मात् वयं यन्त्रशिक्षणकार्यक्रमेषु GPUs इत्यस्य उपयोगस्य शक्तिशालिनः लाभाः द्रष्टुं शक्नुमः ।