Usambazaji Bora wa Muundo wa AI kwenye Vifaa vya Edge kupitia Usanifu Mwenza wa Programu-Mwili
Utangulizi
Kuongezeka kwa vifaa vya makali kumeunda fursa mpya za programu za Upelelezi Bandia (AI) kutumwa kwa wakati halisi, kuwezesha programu kama vile nyumba mahiri, magari yanayojiendesha na mitambo ya kiotomatiki ya viwandani. Hata hivyo, rasilimali chache za hesabu na vikwazo vya nguvu vya vifaa vya makali huleta changamoto kubwa kwa uwekaji wa muundo wa AI. Katika nakala hii, tutachunguza makutano ya AI, uhandisi wa programu, na usanifu ili kuboresha utendakazi wa kifaa, tukiboresha maendeleo ya hivi majuzi katika ufanisi wa muundo wa AI na mbinu za usanifu-programu za maunzi.
Changamoto za Usambazaji wa Modeli ya AI kwenye Vifaa vya Edge
Vifaa vya makali vina sifa ya rasilimali zao ndogo za kukokotoa, ikiwa ni pamoja na CPU, kumbukumbu, na matumizi ya nishati. Miundo ya jadi ya AI, ambayo mara nyingi imeundwa kwa ajili ya utumiaji wa msingi wa wingu, haijaboreshwa kwa vifaa vya makali. Kama matokeo, wanaweza kusababisha:
- Kuharibika kwa utendakazi: Miundo ya AI inaweza isifanye kazi vizuri kwenye vifaa vya makali, hivyo basi kusababisha muda wa majibu polepole na usahihi uliopunguzwa.
- Matumizi ya nishati: Miundo ya AI inaweza kutumia nishati kubwa, ambayo inaweza kuwa wasiwasi kwa vifaa vinavyotumia betri.
- Vikwazo vya kumbukumbu: Miundo ya AI inaweza kuhitaji kiasi kikubwa cha kumbukumbu, ambayo inaweza kuwa changamoto kwa vifaa vya makali vilivyo na rasilimali chache za kumbukumbu.
Mbinu za Usanifu Mwenza wa Programu-Vifaa
Ili kukabiliana na changamoto hizi, mbinu za usanifu-programu-shirikishi wa programu zimeibuka kama suluhisho la kuahidi. Mbinu hizi zinajumuisha kubuni vifaa na vijenzi vya programu vya kifaa cha makali sanjari, kuviboresha kwa uwekaji wa muundo wa AI.
1. Mfano wa Kupogoa
Kupogoa kwa mfano kunahusisha kuondoa uzito na miunganisho isiyo ya lazima kutoka kwa muundo wa AI, kupunguza ukubwa wake na mahitaji ya hesabu. Mbinu hii inaweza kutumika kwa mitandao ya neva na miti ya maamuzi.
kuagiza tochi
import tochi.nn kama nn
darasa ModelPruning(nn.Module):
def __init__(binafsi):
super(ModelPruning, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def mbele (binafsi, x):
x = tochi.relu(self.fc1(x))
x = self.fc2(x)
kurudi x
model = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured(mfano, 'uzito', 0.1)
2. Uboreshaji wa maarifa
Kuchemsha maarifa kunahusisha kuhamisha maarifa kutoka kwa kielelezo kikubwa na changamano cha AI hadi kwa ndogo, rahisi zaidi. Mbinu hii inaweza kutumika kupunguza ukubwa na mahitaji ya hesabu ya muundo wa AI.
kuagiza tochi
import tochi.nn kama nn
class KnowledgeDistillation(nn.Module):
def __init__(binafsi):
super(KnowledgeDistillation, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def mbele (binafsi, x):
x = tochi.relu(self.fc1(x))
x = self.fc2(x)
kurudi x
mwalimu_model = ModelPruning()
mwanafunzi_model = KnowledgeDistillation()
3. Quantization
Ukadiriaji unahusisha kupunguza usahihi wa uzani wa muundo wa AI na kuwezesha, kupunguza mahitaji ya hesabu ya muundo wa AI.
kuagiza tochi
import tochi.nn kama nn
Ukadiriaji wa darasa (nn.Module):
def __init__(binafsi):
super(Quantization, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def mbele (binafsi, x):
x = tochi.relu(self.fc1(x))
x = self.fc2(x)
kurudi x
model = ModelPruning()
quantized_model = torch.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8)
Amri/Vijisehemu 5-10 Bora Zaidi
| Amri/ Kijisehemu | Maelezo |
|---|---|
mwenge.nn.utils.prune_l1_unstructured(mfano, 'uzito', 0.1) |
Kupogoa kwa mfano kwa kutumia urekebishaji wa L1 |
mwenge.quantization.quantize_dynamic(mfano, {tochi.nn.Linear}, dtype=tochi.qint8) |
Ukadiriaji kwa kutumia ukadiriaji unaobadilika |
mwenge.nn.utils.kldistance(mwalimu_mfano, mwanafunzi_mfano) |
Kunyunyizia maarifa kwa kutumia tofauti ya KL |
mwenge.nn.utils.weight_norm(model.fc1) |
Kurekebisha uzito kwa kutumia kawaida ya uzito |
tochi.nn.utils.clip_grad_norm_(modeli.parameters(), 1.0) |
Upunguzaji wa gradient kwa kutumia klipu ya kawaida ya grad |
tochi.nn.utils.clip_grad_value_(modeli.parameters(), 1.0) |
Kupunguza gradient kwa kutumia thamani ya klipu ya gradi |
tochi.nn.utils.remove_weight_norm(model.fc1) |
Kuondoa uzito kuhalalisha kwa kutumia kawaida ya kuondoa uzito |
torch.nn.utils.fuse_conv_bn_eval(model.fc1) |
Muunganisho wa safu ya ubadilishaji kwa kutumia fuse conv bn eval |
torch.nn.utils.fuse_bn_eval(model.fc2) |
Muunganisho wa kuhalalisha bechi kwa kutumia fuse bn eval |
torch.nn.utils.fuse_bn_eval(model.fc1) |
Muunganisho wa kuhalalisha bechi kwa kutumia fuse bn eval |
Taswira
{
"type": "bar",
"data": {
"labels": ["Kupogoa kwa Mfano", "Uenezaji wa Maarifa", "Quantization"],
"seti za data": {
"label": "Usahihi",
"data": [0.9, 0.85, 0.8]
}
},
"chaguo": {
"kichwa": {
"onyesha": kweli,
"text": "Ulinganisho wa Usahihi"
},
"hadithi": {
"onyesha": kweli
}
}
}
Hitimisho
Uwekaji mzuri wa muundo wa AI kwenye vifaa vya makali unahitaji mchanganyiko wa mbinu za usanifu wa maunzi na programu. Upogoaji wa kielelezo, uenezaji wa maarifa, na ujazo ni baadhi ya mbinu zinazoweza kutumika kupunguza ukubwa na mahitaji ya kimahesabu ya miundo ya AI. Kwa kutumia mbinu hizi, wasanidi programu wanaweza kuunda miundo ya AI ambayo imeboreshwa kwa ajili ya vifaa vya makali, kuwezesha utumizi wa wakati halisi kama vile nyumba mahiri, magari yanayojiendesha na mitambo ya viwandani.
Kazi ya Baadaye
Kazi za baadaye katika eneo hili ni pamoja na:
- Kutengeneza mbinu mpya za usanifu-shirikishi wa programu-jalizi: Watafiti na wasanidi wanaweza kuchunguza mbinu mpya za kuboresha miundo ya AI kwa vifaa vya makali.
- Kuboresha kanuni za upogoaji na maarifa za kunereka: Kutengeneza kanuni bora zaidi za upogoaji wa kielelezo na unyunyushaji wa maarifa kunaweza kusababisha utendakazi bora na usahihi.
- Kuchunguza matumizi ya miundo mingine ya AI: Miundo mingine ya AI, kama vile miti ya maamuzi na misitu ya nasibu, inaweza kuchunguzwa kwa ajili ya matumizi ya vifaa vya makali.
Kwa kuendelea kuendeleza uga wa usanifu-shirikishi wa programu-jalizi, tunaweza kuunda miundo ya AI yenye ufanisi zaidi na yenye ufanisi kwa vifaa vya makali, kuwezesha utumizi mbalimbali na kesi za utumiaji.