精品欧美一区二区三区在线观看 _久久久久国色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)

99精品福利视频| xx欧美视频| 国产一区二区三区免费播放| 欧美黑人性视频| 少妇一级淫片免费放播放| 亚洲美女炮图| 亚洲日本在线a| 久久精品日产第一区二区三区精品版 | 精品视频在线观看一区| 国产高清视频在线| 国产精品一二一区| 国产成人拍精品视频午夜网站| 手机免费观看av| 国产精品调教| 在线电影院国产精品| 日韩av高清在线看片| 在线免费av电影| 成人福利电影精品一区二区在线观看| 国产成人97精品免费看片| 国产成人av免费在线观看| 里番精品3d一二三区| 欧美日高清视频| 国产熟女高潮视频| 日韩少妇视频| 中文字幕中文字幕在线一区 | 国产精品免费福利| 日本一区二区欧美| 亚洲一区二区日韩| 亚洲黄色大片| 亚洲地区一二三色| 一本一本a久久| 欧美成人免费| 不卡区在线中文字幕| 91视频国产一区| 国产成人麻豆免费观看| 亚洲一区欧美二区| 欧美精品www| 免费三片在线播放| 国产精品国产一区| 中文字幕日韩av综合精品| 美女又爽又黄视频毛茸茸| 久久久久久久久久久久电影| 欧美视频在线观看一区二区| 丝袜人妻一区二区三区| 天天色天天射天天综合网| 国产精品全国免费观看高清| 欧美18视频| 五月婷婷综合久久| 成人性生交大片免费看中文网站| 91久久精品国产| 在线观看视频二区| 日本特黄久久久高潮| 国产91在线播放| 黄瓜视频在线免费观看| 欧美在线综合| 欧美一区二区影院| 波多野结衣视频网站| 99精品欧美| 97婷婷大伊香蕉精品视频| 国产精品第56页| 在线欧美亚洲| 97在线观看免费| 一区二区三区视频免费看| 亚洲美女啪啪| 26uuu另类亚洲欧美日本老年| 日韩欧美中文字幕一区二区| aa亚洲婷婷| 91爱爱小视频k| 少妇太紧太爽又黄又硬又爽| 奶水喷射视频一区| 国产va免费精品高清在线观看| 成人一级免费视频| 美国十次了思思久久精品导航| 丝袜诱惑亚洲看片| 日韩在线观看免费全| 无码人妻精品中文字幕| 你懂的国产精品永久在线| 久久99青青精品免费观看| 久青草免费视频| 夜夜精品视频| 国产第一区电影| 国产一区二区在线不卡| 国产成人8x视频一区二区 | 黄色免费视频大全| 欧美黑人巨大xxxxx| 欧洲激情一区二区| 91精品视频国产| swag国产精品一区二区| 日韩精品一区二区视频| 丁香六月激情综合| 黄色成人91| 日本高清不卡的在线| 在线观看xxxx| 成人av网址在线| 日本免费一区二区三区| 国产在线1区| 精品久久中文字幕久久av| 欧美极品欧美精品欧美图片| 欧美性aaa| 亚洲精品国产欧美| 国产农村妇女精品一区| 尹人成人综合网| 国产精品男女猛烈高潮激情| 亚洲a视频在线| 国产日韩精品一区二区浪潮av| 肉大捧一出免费观看网站在线播放| 91白丝在线| 欧美欧美午夜aⅴ在线观看| 手机在线成人av| 午夜影院欧美| 国产91在线播放九色快色| 国产xxxx孕妇| 欧美国产精品中文字幕| 久久这里只有精品23| av在线日韩| 亚洲精品成人久久久| 日本黄色片免费观看| 久久精品日韩欧美| 国产精品免费观看高清| 日韩伦理在线观看| 欧美日韩一区二区免费视频| 夜夜爽久久精品91| 日韩精品91| 奇米一区二区三区四区久久| www香蕉视频| 国产精品美女久久久久久2018| 精品无码一区二区三区在线| 99国内精品久久久久| 亚洲人线精品午夜| 国产无遮挡免费视频| 国产一区在线观看麻豆| 少妇特黄a一区二区三区| mm1313亚洲国产精品美女| 在线中文字幕一区二区| 亚洲成人日韩在线| 亚洲伦伦在线| 国产精品国产三级国产专区53| 婷婷激情在线| 欧美唯美清纯偷拍| 受虐m奴xxx在线观看| 一本不卡影院| 激情伦成人综合小说| 金瓶狂野欧美性猛交xxxx | 日本一区二区在线免费播放| 欧美一区二区公司| 亚洲最新在线观看| 免费看三级黄色片| 国内精品久久久久国产盗摄免费观看完整版| 国产美女主播一区| 青青影院在线观看| 欧美日韩另类一区| 极品人妻videosss人妻| 日本视频免费一区| 亚洲精品一区二| av在线一区不卡| 中文字幕日韩在线视频| 少妇又紧又色又爽又刺激视频| 久久亚洲欧美国产精品乐播| 国产特级黄色大片| 亚洲三级精品| 国产精品成人在线| 91亚洲欧美| 7777女厕盗摄久久久| 久久久精品少妇| 国产乱码一区二区三区| 91国在线高清视频| 澳门成人av| 欧美亚洲国产成人精品| 免费黄色在线视频网站| 欧美无砖砖区免费| 免费三级在线观看| 风间由美性色一区二区三区| 国产极品在线视频| 久久av电影| 国产日本欧美一区二区三区| 高清全集视频免费在线| 精品国产一区二区三区忘忧草| 日本五十路女优| 久久久精品免费免费| 国产精品入口免费软件| 欧美国产小视频| www日韩av| 草草视频在线| 正在播放国产一区| 国产男男gay体育生网站| 亚洲无线码一区二区三区| 一本色道综合久久欧美日韩精品| 久久综合激情| 大地资源第二页在线观看高清版| 亚洲日本视频在线| 国产成人综合久久| av网址在线看| 日韩精品在线电影| 国产精品毛片久久久久久久av| 亚洲自拍偷拍av| 天天躁日日躁aaaxxⅹ| 国产一区二区h| 日日橹狠狠爱欧美超碰| 91精品国产乱码久久久久久| 国产偷久久久精品专区| 日本精品在线中文字幕| 九九精品视频在线| 欧美美女搞黄| 日韩欧美黄色影院| 国产成人无码专区| 一区二区成人在线观看| 少妇av片在线观看| 国产suv精品一区二区三区| 日韩欧美黄色大片| 激情综合在线| 中国人体摄影一区二区三区| 少妇高潮一区二区三区| 91在线看www| 亚洲爱爱视频| 91a在线视频| 黄色的视频在线观看| 国产精品国产a级| 中文字幕无码毛片免费看| 亚洲一区二区三区高清| 乱子伦一区二区| 免费欧美视频| 国产成人精品日本亚洲11| 国产第一亚洲| 久久久日本电影| 免费在线看a| 国产香蕉精品视频一区二区三区 | 唐人社导航福利精品| 欧美激情亚洲视频| 国产三区视频在线观看| 亚洲一品av免费观看| 特黄视频在线观看| 91麻豆精品国产91久久久久久 | 欧美一级爽aaaaa大片| 911精品国产| 91欧美精品成人综合在线观看| 台湾佬成人网| 国产999视频| 亚洲同志男男gay1069网站| 久久久久久久久久国产精品| 国产黄色小视频在线| 日韩在线欧美在线| 国产毛片在线看| 亚洲人成伊人成综合网久久久| 亚洲欧美日本在线观看| 欧美精品一区在线观看| www.日韩高清| 日韩三级av在线播放| 国产精品污视频| 欧美高清一级片在线| 亚洲天堂中文字幕在线| 欧美视频一区在线观看| 欧美性受xxx黑人xyx性爽| 日韩欧美在线观看| 成年人免费高清视频| 亚欧色一区w666天堂| 国产真人真事毛片| 亚洲成人免费在线观看| 日韩av女优在线观看| 亚洲国产精品久久久久秋霞影院| 久久精品99国产精| 亚洲国产日韩一区二区| 欧美一级高潮片| 精品国产999| 久久国产视频一区| 在线看不卡av| 国产又粗又黄又爽视频| 6080国产精品一区二区| 国产视频在线一区| 精品久久人人做人人爽| 天堂av2024| 亚洲欧美中文日韩在线v日本| 精品成人一区二区三区免费视频| 国产一区二区成人| 日本三级在线播放完整版| 久久精品成人动漫| 日本色护士高潮视频在线观看| 久久久亚洲成人| 欧美激情护士| 国产精品久久久av| 99精品视频在线免费播放| 成人综合电影| 蜜桃视频欧美| 91免费视频黄| 伊人影院久久| 中文字幕一区二区三区四区在线视频| 蜜臀av性久久久久蜜臀aⅴ | 91污在线观看| 国产传媒视频在线| 亚洲一区二区三区美女| 国产精品久免费的黄网站| 欧美日韩亚州综合| 亚洲大尺度视频| 亚洲欧美一区二区精品久久久| 在线免费看a| 久久全国免费视频| 国产一区一一区高清不卡| 亚洲va欧美va国产综合久久| 免费看成人人体视频| 亚洲一区二区在线看| 欧美三区在线| 中文字幕国内自拍| 国产精品一区二区免费不卡| www.久久av| 亚洲精品乱码久久久久久久久| 国产精品100| 日韩一区二区三区精品视频| 美国成人毛片| 欧美黑人一级爽快片淫片高清| 女生影院久久| 成人性色av| 四虎成人精品永久免费av九九| 久久国产精品网| 激情五月婷婷综合| 亚洲 小说 欧美 激情 另类| 亚洲综合在线五月| 亚洲一级视频在线观看| 日韩精品在线免费观看| 97超碰在线公开在线看免费| 国产aaa精品| 美女一区2区| 在线观看18视频网站| 日韩精品一二三| 9.1成人看片| 亚洲综合精品久久| 国产美女裸体无遮挡免费视频| 国产亚洲xxx| 日本在线影院| 高清免费日韩| 亚洲国产成人精品女人| 激情综合网俺也去| 久久众筹精品私拍模特| 国产精品7777| 欧美α欧美αv大片| 黄色成人影院| 国产一区视频在线| 国产一区二区三区91| av动漫在线看| www.成人在线| 久久视频免费在线观看| 欧美zozo另类异族| 久久国产精品黑丝| 粉嫩高清一区二区三区精品视频| 久久精品欧美一区| 污网站在线免费| 国产精品传媒视频| 亚洲天堂aaa| 久久九九国产精品怡红院| 婷婷激情成人| 国产精品av免费| 激情综合一区二区三区| 手机在线中文字幕| 欧美日韩一区二区三区视频| 国产免费av高清在线| 国产精品日本精品| 国产精品久久久久久影院8一贰佰| 日韩欧美国产午夜精品| 亚洲国产剧情在线观看| 亚洲欧洲日产国码二区| 夜夜躁很很躁日日躁麻豆| 自拍偷拍免费精品| 午夜精品久久久久久毛片| 一区二区三区国产福利| 精品亚洲欧美一区| 一区视频免费观看| 日韩欧美一区二区视频| 欧美草逼视频| 黑人中文字幕一区二区三区| 国产日韩一区二区三区在线播放 | 91在线播放网址| 日韩免费av网站| 色偷偷亚洲男人天堂| www.久久99| 可以看毛片的网址| 91免费观看国产| 最近中文字幕免费观看| 麻豆一区二区在线观看| 99ri日韩精品视频| 国产日产欧美视频| 中文字幕精品三区| 午夜精品久久久久久久99热黄桃 | 亚洲一区三区电影在线观看| 国内精品国产成人| 国产精品7777| 中文字幕日韩电影| 日韩高清在线观看一区二区| 久久综合色视频| 国产精品三级视频| 亚洲国产999| 国产成人一区三区| 欧美黄免费看| 国产成人av一区二区三区不卡| 欧美视频一区二| 女同视频在线观看| 日本三级中国三级99人妇网站| 久久精品国产**网站演员| 国产亚洲小视频| 一本色道久久综合狠狠躁篇的优点 | 欧美电影免费播放| 国产精品嫩草av| 欧美精品aⅴ在线视频|