精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MLX vs MPS vs CUDA:蘋果新機(jī)器學(xué)習(xí)框架的基準(zhǔn)測試

人工智能
如果你是一個(gè)Mac用戶和一個(gè)深度學(xué)習(xí)愛好者,你可能希望在某些時(shí)候Mac可以處理一些重型模型。蘋果剛剛發(fā)布了MLX,一個(gè)在蘋果芯片上高效運(yùn)行機(jī)器學(xué)習(xí)模型的框架。

如果你是一個(gè)Mac用戶和一個(gè)深度學(xué)習(xí)愛好者,你可能希望在某些時(shí)候Mac可以處理一些重型模型。蘋果剛剛發(fā)布了MLX,一個(gè)在蘋果芯片上高效運(yùn)行機(jī)器學(xué)習(xí)模型的框架。

最近在PyTorch 1.12中引入MPS后端已經(jīng)是一個(gè)大膽的步驟,但隨著MLX的宣布,蘋果還想在開源深度學(xué)習(xí)方面有更大的發(fā)展。

在本文中,我們將對(duì)這些新方法進(jìn)行測試,在三種不同的Apple Silicon芯片和兩個(gè)支持cuda的gpu上和傳統(tǒng)CPU后端進(jìn)行基準(zhǔn)測試。

這里把基準(zhǔn)測試集中在圖卷積網(wǎng)絡(luò)(GCN)模型上。這個(gè)模型主要由線性層組成,所以對(duì)于其他的模型也應(yīng)該得到類似的結(jié)果。

創(chuàng)造環(huán)境

要為MLX構(gòu)建環(huán)境,我們必須指定是使用i386還是arm架構(gòu)。使用conda,可以使用:

CONDA_SUBDIR=osx-arm64 conda create -n mlx pythnotallow=3.10 numpy pytorch scipy requests -c conda-forge
 conda activate mlx

如果檢查你的env是否實(shí)際使用了arm,下面命令的輸出應(yīng)該是arm,而不是i386(因?yàn)槲覀冇玫腁pple Silicon):

python -c "import platform; print(platform.processor())"

然后就是使用pip安裝MLX:

pip install mlx

GCN模型

GCN模型是圖神經(jīng)網(wǎng)絡(luò)(GNN)的一種,它使用鄰接矩陣(表示圖結(jié)構(gòu))和節(jié)點(diǎn)特征。它通過收集鄰近節(jié)點(diǎn)的信息來計(jì)算節(jié)點(diǎn)嵌入。每個(gè)節(jié)點(diǎn)獲得其鄰居特征的平均值。這種平均是通過將節(jié)點(diǎn)特征與標(biāo)準(zhǔn)化鄰接矩陣相乘來完成的,并根據(jù)節(jié)點(diǎn)度進(jìn)行調(diào)整。為了學(xué)習(xí)這個(gè)過程,特征首先通過線性層投射到嵌入空間中。

我們將使用MLX實(shí)現(xiàn)一個(gè)GCN層和一個(gè)GCN模型:

import mlx.nn as nn
 
 class GCNLayer(nn.Module):
    def __init__(self, in_features, out_features, bias=True):
        super(GCNLayer, self).__init__()
        self.linear = nn.Linear(in_features, out_features, bias)
 
    def __call__(self, x, adj):
        x = self.linear(x)
        return adj @ x
 
 class GCN(nn.Module):
    def __init__(self, x_dim, h_dim, out_dim, nb_layers=2, dropout=0.5, bias=True):
        super(GCN, self).__init__()
 
        layer_sizes = [x_dim] + [h_dim] * nb_layers + [out_dim]
        self.gcn_layers = [
            GCNLayer(in_dim, out_dim, bias)
            for in_dim, out_dim in zip(layer_sizes[:-1], layer_sizes[1:])
        ]
        self.dropout = nn.Dropout(p=dropout)
 
    def __call__(self, x, adj):
        for layer in self.gcn_layers[:-1]:
            x = nn.relu(layer(x, adj))
            x = self.dropout(x)
 
        x = self.gcn_layers[-1](x, adj)
        return x

可以看到,mlx的模型開發(fā)方式與tf2基本一樣,都是調(diào)用__call__進(jìn)行前向傳播,其實(shí)torch也一樣,只不過它自定義了一個(gè)forward函數(shù)。

下面就是訓(xùn)練:

gcn = GCN(
    x_dim=x.shape[-1],
    h_dim=args.hidden_dim,
    out_dim=args.nb_classes,
    nb_layers=args.nb_layers,
    dropout=args.dropout,
    bias=args.bias,
 )
 mx.eval(gcn.parameters())
 
 optimizer = optim.Adam(learning_rate=args.lr)
 loss_and_grad_fn = nn.value_and_grad(gcn, forward_fn)
 
 # Training loop
 for epoch in range(args.epochs):
 
    # Loss
    (loss, y_hat), grads = loss_and_grad_fn(
        gcn, x, adj, y, train_mask, args.weight_decay
    )
    optimizer.update(gcn, grads)
    mx.eval(gcn.parameters(), optimizer.state)
 
    # Validation
    val_loss = loss_fn(y_hat[val_mask], y[val_mask])
    val_acc = eval_fn(y_hat[val_mask], y[val_mask])

在MLX中,計(jì)算是惰性的,這意味著eval()通常用于在更新后實(shí)際計(jì)算新的模型參數(shù)。而另一個(gè)關(guān)鍵函數(shù)是nn.value_and_grad(),它生成一個(gè)計(jì)算參數(shù)損失的函數(shù)。第一個(gè)參數(shù)是保存當(dāng)前參數(shù)的模型,第二個(gè)參數(shù)是用于前向傳遞和損失計(jì)算的可調(diào)用函數(shù)。它返回的函數(shù)接受與forward函數(shù)相同的參數(shù)(在本例中為forward_fn)。我們可以這樣定義這個(gè)函數(shù):

def forward_fn(gcn, x, adj, y, train_mask, weight_decay):
    y_hat = gcn(x, adj)
    loss = loss_fn(y_hat[train_mask], y[train_mask], weight_decay, gcn.parameters())
    return loss, y_hat

它僅僅包括計(jì)算前向傳遞和計(jì)算損失。Loss_fn()和eval_fn()定義如下:

def loss_fn(y_hat, y, weight_decay=0.0, parameters=None):
    l = mx.mean(nn.losses.cross_entropy(y_hat, y))
 
    if weight_decay != 0.0:
        assert parameters != None, "Model parameters missing for L2 reg."
 
        l2_reg = sum(mx.sum(p[1] ** 2) for p in tree_flatten(parameters)).sqrt()
        return l + weight_decay * l2_reg
 
    return l
 
 def eval_fn(x, y):
    return mx.mean(mx.argmax(x, axis=1) == y)

損失函數(shù)是計(jì)算預(yù)測和標(biāo)簽之間的交叉熵,并包括L2正則化。由于L2正則化還不是內(nèi)置特性,需要手動(dòng)實(shí)現(xiàn)。

本文的完整代碼:https://github.com/TristanBilot/mlx-GCN

可以看到除了一些細(xì)節(jié)函數(shù)調(diào)用的差別,基本的訓(xùn)練流程與pytorch和tf都很類似,但是這里的一個(gè)很好的事情是消除了顯式地將對(duì)象分配給特定設(shè)備的需要,就像我們?cè)赑yTorch中經(jīng)常使用.cuda()和.to(device)那樣。這是因?yàn)樘O果硅芯片的統(tǒng)一內(nèi)存架構(gòu),所有變量共存于同一空間,也就是說消除了CPU和GPU之間緩慢的數(shù)據(jù)傳輸,這樣也可以保證不會(huì)再出現(xiàn)與設(shè)備不匹配相關(guān)的煩人的運(yùn)行時(shí)錯(cuò)誤。

基準(zhǔn)測試

我們將使用MLX與MPS, CPU和GPU設(shè)備進(jìn)行比較。我們的測試平臺(tái)是一個(gè)2層GCN模型,應(yīng)用于Cora數(shù)據(jù)集,其中包括2708個(gè)節(jié)點(diǎn)和5429條邊。

對(duì)于MLX, MPS和CPU測試,我們對(duì)M1 Pro, M2 Ultra和M3 Max進(jìn)行基準(zhǔn)測試。在兩款NVIDIA V100 PCIe和V100 NVLINK上進(jìn)行測試。

MPS:比M1 Pro的CPU快2倍以上,在其他兩個(gè)芯片上,與CPU相比有30-50%的改進(jìn)。

MLX:比M1 Pro上的MPS快2.34倍。與MPS相比,M2 Ultra的性能提高了24%。在M3 Pro上MPS和MLX之間沒有真正的改進(jìn)。

CUDA V100 PCIe & NVLINK:只有23%和34%的速度比M3 Max與MLX,這里的原因可能是因?yàn)槲覀兊哪P捅容^小,所以發(fā)揮不出V100和NVLINK的優(yōu)勢(NVLINK主要GPU之間的數(shù)據(jù)傳輸大的情況下會(huì)有提高)。這也說明了蘋果的統(tǒng)一內(nèi)存架構(gòu)的確可以消除CPU和GPU之間緩慢的數(shù)據(jù)傳輸。

總結(jié)

與CPU和MPS相比,MLX可以說是非常大的金幣,在小數(shù)據(jù)量的情況下它甚至接近特斯拉V100的性能。也就是說我們可以使用MLX跑一些不是那么大的模型,比如一些表格數(shù)據(jù)。

從上面的基準(zhǔn)測試也可以看到,現(xiàn)在可以利用蘋果芯片的全部力量在本地運(yùn)行深度學(xué)習(xí)模型(我一直認(rèn)為MPS還沒發(fā)揮蘋果的優(yōu)勢,這回MPS已經(jīng)證明了這一點(diǎn))。

MLX剛剛發(fā)布就已經(jīng)取得了驚人的影響力,并展示了巨大的潛力。相信未來幾年開源社區(qū)的進(jìn)一步增強(qiáng),可以期待在不久的將來更強(qiáng)大的蘋果芯片,將MLX的性能提升到一個(gè)全新的水平。

另外也說明了MPS(雖然也發(fā)布不久)還是有巨大的發(fā)展空間的,畢竟切換框架是一件很麻煩的事情,如果MPS能達(dá)到MLX 80%或者90%的速度,我想不會(huì)有人去換框架的。

最后說到框架,現(xiàn)在已經(jīng)有了Pytorch,TF,JAX,現(xiàn)在又多了一個(gè)MLX。各種設(shè)備、各種后端包括:TPU(pytorch使用的XLA),CUDA,ROCM,現(xiàn)在又多了一個(gè)MPS。

責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2025-07-17 14:20:23

2020-05-18 07:00:00

性能測試壓力測試負(fù)載測試

2011-06-08 16:59:04

性能測試載測試壓力測試

2017-11-23 22:32:18

框架ScrumXP

2018-06-05 11:30:22

數(shù)據(jù)科學(xué)機(jī)器學(xué)習(xí)統(tǒng)計(jì)學(xué)

2017-09-11 10:55:22

PythonWeb框架

2017-05-10 09:26:41

機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2013-05-06 10:40:40

工程師IBM機(jī)器人

2017-09-26 11:25:00

AI

2023-03-01 11:18:59

人工智能機(jī)器學(xué)習(xí)

2021-09-01 09:19:03

人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析

2018-07-06 08:58:53

機(jī)器人人工智能系統(tǒng)

2018-07-03 15:59:14

KerasPyTorch深度學(xué)習(xí)

2023-10-09 12:36:25

AI模型

2021-11-08 10:25:39

機(jī)器人疫苗人工智能

2009-12-02 15:11:04

Vs.Net 2010

2024-03-04 13:21:00

模型訓(xùn)練

2020-05-06 14:19:53

大數(shù)據(jù)數(shù)據(jù)科學(xué)機(jī)器學(xué)習(xí)

2022-08-18 09:42:02

人工智能機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91精品视频观看| 中文字幕日韩欧美| 成年人看的毛片| 婷婷五月综合激情| 日本v片在线高清不卡在线观看| 最新国产成人av网站网址麻豆| 日本高清免费观看| 手机在线观看av| 国产精品免费视频一区| 99精品国产高清在线观看| 亚洲免费在线观看av| 青青草综合网| 亚洲国产精品免费| 日本高清久久久| 欧美三级网站| 亚洲男女一区二区三区| 免费电影一区| 亚洲成人777777| 日本人妖一区二区| 久久久久久久久久久人体| 爱爱的免费视频| 日韩在线观看一区二区三区| 色诱亚洲精品久久久久久| 亚洲美女自拍偷拍| 国产视频福利在线| 国产91综合网| 成人激情视频在线| 天天综合久久综合| 999亚洲国产精| 久久高清视频免费| av片在线免费看| 一本色道久久综合亚洲精品酒店| 欧美sm美女调教| 三区视频在线观看| 精品成人av| 欧美日韩国产色| 久久人人爽人人爽人人av| 嫩草在线视频| 中文字幕久久午夜不卡| 免费亚洲精品视频| 天堂在线观看av| 成人一二三区视频| 99视频免费观看| 99热这里只有精品3| 麻豆国产精品一区二区三区| 日本伊人精品一区二区三区介绍| 国产一国产二国产三| 午夜亚洲福利| 欧美成人精品不卡视频在线观看| 成人无码精品1区2区3区免费看| 九九热爱视频精品视频| 日韩电影视频免费| 精品国产一区在线| 国偷自产视频一区二区久| 精品盗摄一区二区三区| 亚洲av无码一区东京热久久| jizz18欧美18| 亚洲精品一区二区三区99| 精产国品一二三区| 精品一区二区三区免费看| 欧美一区二区视频网站| 在线免费观看av网| 亚洲不卡视频| 亚洲国产精品yw在线观看| 一级黄色片毛片| 久久中文资源| 亚洲美女在线看| 韩国三级hd中文字幕| 国产日产精品_国产精品毛片| 国产婷婷成人久久av免费高清| 爱爱免费小视频| 精品久久久久久久| 深夜福利91大全| 久久成人av网站| 久久精品视频16| 日韩精品极品| 色av综合在线| 一区二区三区四区毛片| 91精品亚洲一区在线观看| 91精品在线一区二区| 潘金莲一级淫片aaaaaaa| 高清精品xnxxcom| 亚洲视频视频在线| 中文字幕求饶的少妇| 欧美国产91| 992tv在线成人免费观看| 男人天堂2024| 精品一二三四区| 国产亚洲一区二区三区在线播放| 三级av在线播放| 国产精品黄色在线观看| 国产肉体ⅹxxx137大胆| 欧美xoxoxo| 欧美猛男超大videosgay| 国产大学生av| 国产永久精品大片wwwapp| 搡老女人一区二区三区视频tv| 国产十六处破外女视频| 亚洲自啪免费| 91久久在线播放| 日韩在线无毛| 一区二区在线观看免费| 国产成人av影视| 精品国产亚洲一区二区三区| 亚洲精品美女在线观看| 欧美色视频一区二区三区在线观看| 狠狠入ady亚洲精品| 国产精品白嫩美女在线观看| 精品人妻伦一二三区久久| 久久久久国产精品人| 久久久久久久91| 国产美女被下药99| 国产在线视频卡一卡二| 蜜臀av性久久久久av蜜臀妖精| 999视频在线观看| 成年网站在线| 精品久久久久人成| 成人高清在线观看视频| 欧美日韩精品在线一区| 国内外成人免费激情在线视频网站 | 黄色一级片在线免费观看| 亚洲精品影视| 5g影院天天爽成人免费下载| 97电影在线| 欧美性猛交xxxx免费看漫画| 精品人妻二区中文字幕| 久久人人99| 国产成人免费av电影| 少妇一区二区三区四区| 亚洲精品videosex极品| 中文字幕22页| 日韩av密桃| 日本高清+成人网在线观看| 成人久久精品人妻一区二区三区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久五月天小说| 琪琪亚洲精品午夜在线| 成人午夜免费在线观看| 亚洲美腿欧美偷拍| 色18美女社区| 91精品国产91久久综合| 91久久久久久| 欧美私人网站| 欧美精品三级日韩久久| 中国特黄一级片| 日韩黄色片在线观看| 欧美一级爱爱| 成人啊v在线| 中文字幕成人在线| 中文字幕免费高清在线观看| 日本一区二区成人在线| 久久精品免费网站| 国内精品久久久久久99蜜桃| 国产97在线观看| 国产h在线观看| 欧美日韩一级片在线观看| 一级黄色毛毛片| 久久99精品久久久久久久久久久久| 亚洲精品国产系列| 女人十八岁毛片| 久久天堂av| 亚洲色图在线观看| 午夜一区二区三区四区| 国产日产欧美一区二区三区| 嫩草av久久伊人妇女超级a| 国产精品日韩精品中文字幕| 国产精品久久久久久超碰| 国产二区在线播放| 欧美精品久久99| 欧美黄色免费在线观看| 成人av在线一区二区| 日本欧美黄色片| 国产欧美日韩影院| 成人在线中文字幕| 黄页网站在线观看免费| 日韩精品亚洲元码| 国产精品欧美综合| 亚洲私人影院在线观看| 伊人久久久久久久久| 黑丝一区二区| 日本在线观看一区二区三区| 狠狠久久综合| 欧美激情第1页| 日本不卡免费播放| 51久久夜色精品国产麻豆| 久久精品国产av一区二区三区| 91免费国产在线观看| 日本a√在线观看| 午夜亚洲福利| 日韩精品一线二线三线| 国产一区二区视频在线看| 国内精品久久久久影院 日本资源| 欧美精品a∨在线观看不卡 | 国产日产精品1区| 亚洲图色中文字幕| 日韩视频一区| 在线视频福利一区| 青青久久av| 国产在线精品一区免费香蕉| 91九色在线看| 久久精品国产成人| 香蕉视频网站在线| 欧美精品久久99| 日本中文字幕在线| 亚洲人xxxx| 免费污网站在线观看| 国产v综合v亚洲欧| 国产天堂在线播放| 亚洲午夜精品久久久久久app| 欧美一区1区三区3区公司 | 免费黄色激情视频| 97超碰欧美中文字幕| 一级黄色大片儿| 日韩激情av在线| av免费观看网| 888久久久| 日韩少妇中文字幕| 免费看久久久| 亚洲a区在线视频| 亚洲a∨精品一区二区三区导航| 欧美黑人巨大xxx极品| av在线免费一区| 日韩精品黄色网| 亚洲精品18p| 91精品在线一区二区| 久久久999久久久| 福利二区91精品bt7086| 久久久久久久久久久久久久免费看| 中文字幕精品在线不卡| 男女做爰猛烈刺激| 91麻豆精品视频| 特级特黄刘亦菲aaa级| 国产一区视频网站| 亚欧激情乱码久久久久久久久| 久久亚洲国产精品一区二区| 99久久国产综合精品五月天喷水| 亚洲精品tv久久久久久久久久| 色综合久久久久久久久五月| 亚洲bt欧美bt精品777| 风间由美久久久| 欧美一级做一级爱a做片性| 国产成人免费av电影| 欧美第一视频| 热久久美女精品天天吊色| free性m.freesex欧美| 午夜精品一区二区三区在线| 怡红院在线播放| 久久99精品视频一区97| 新版中文在线官网| 欧美国产第一页| 青草影视电视剧免费播放在线观看| 久久精品电影一区二区| 黄在线免费观看| 欧美成人激情视频| 羞羞的视频在线观看| 欧美夫妻性视频| hd国产人妖ts另类视频| 午夜精品一区二区三区在线播放| 欧美sm一区| 日韩av手机在线| 69堂免费精品视频在线播放| 国产精品一区二区电影| 欧美爱爱视频| 51国产成人精品午夜福中文下载| 一区二区三区在线免费看| 国产精品香蕉视屏| 少妇久久久久| 色综合视频二区偷拍在线| 我不卡手机影院| 青春草国产视频| 久久深夜福利| 亚洲xxx在线观看| 国产精品一区三区| 麻豆短视频在线观看| 91女人视频在线观看| 精品成人无码一区二区三区| 国产精品色在线| 妺妺窝人体色www在线下载| 午夜精品免费在线观看| 国产三级精品三级在线观看| 欧美日韩久久久| 人妻无码中文字幕| 在线观看日韩欧美| a级片国产精品自在拍在线播放| 亚洲18私人小影院| 亚洲不卡系列| caoporen国产精品| 欧美人与拘性视交免费看| 国产卡一卡二在线| 国产一级久久| 亚洲三级在线观看视频| 99精品1区2区| 欧美性生交大片| 精品福利樱桃av导航| 又骚又黄的视频| 亚洲国产高清自拍| 91sp网站在线观看入口| 欧美精品videosex极品1| 欧美舌奴丨vk视频| 97视频资源在线观看| 黑丝美女一区二区| 欧美亚洲色图视频| 免费在线观看一区二区三区| 国产精九九网站漫画| 国产精品麻豆欧美日韩ww| 久久综合激情网| 欧美日韩一区 二区 三区 久久精品| 成人精品在线播放| 久久精品精品电影网| 国产高清不卡| 国产精品一区二区三区在线| 成人一区而且| 欧美日韩国产精品激情在线播放| 精品一二三四区| 黄色片网站免费| 午夜欧美在线一二页| 一级日韩一级欧美| 亚洲午夜小视频| www.youjizz.com在线| 亚洲wwwav| 四虎成人av| 精品久久久久久中文字幕2017| 成人精品鲁一区一区二区| 亚洲天堂一级片| 欧美亚洲日本国产| 国模吧精品人体gogo| 午夜欧美大片免费观看| 一区二区三区四区精品视频| 自拍偷拍99| 免费欧美日韩国产三级电影| 香蕉网在线播放| 精品国产鲁一鲁一区二区张丽| 不卡av中文字幕| 欧美猛交免费看| 久久久精品区| 国产精品美女在线播放| 理论电影国产精品| av免费播放网站| 欧美日精品一区视频| 成人免费在线电影| 国产成人精品电影久久久| 亚洲精品无吗| 哪个网站能看毛片| 91免费看`日韩一区二区| 99热国产在线观看| 日韩av网址在线观看| 97人人在线视频| 含羞草久久爱69一区| 亚洲经典视频在线观看| a级一a一级在线观看| 偷窥国产亚洲免费视频| 男人天堂一区二区| 97在线观看免费| 伊人久久综合影院| 国产成人av影视| 国产精品美女一区二区在线观看| 最近国语视频在线观看免费播放| 国产午夜精品一区二区三区 | 日韩欧美国产黄色| 牛牛影视精品影视| 国产精品www| 久久国产中文字幕| 日本r级电影在线观看| 亚洲一区影音先锋| 日韩一级中文字幕| 庆余年2免费日韩剧观看大牛| 国产99久久| 在线观看岛国av| 一区二区三区高清不卡| 完全免费av在线播放| 97免费公开视频| 亚洲国产精品自拍| 蝌蚪视频在线播放| 成人性生交xxxxx网站| 欧美精品一线| 亚洲精品视频大全| 欧美视频日韩视频| 污片视频在线免费观看| 国产一区二区无遮挡| 噜噜噜躁狠狠躁狠狠精品视频| 受虐m奴xxx在线观看| 欧美人体做爰大胆视频| 国产美女福利在线观看| 日本一区二区精品视频| 韩国欧美国产1区| 圆产精品久久久久久久久久久| 夜夜躁日日躁狠狠久久88av| 国语精品视频| 久久久久人妻精品一区三寸| 国产精品久99| 头脑特工队2免费完整版在线观看| 欧美诱惑福利视频| 91成人看片| 国产精品高清无码在线观看| 91麻豆精品国产91久久久使用方法 | 国产精品sss在线观看av| 韩国中文字幕av| 亚洲国产成人av| 日本中文字幕电影在线免费观看 | 一区二区三区四区av|