PyTorch ジオメトリック ライブラリとディープ グラフ ライブラリを比較して、チームが最適な GNN ライブラリを選択できるようにします。

PyTorch ジオメトリック ライブラリとディープ グラフ ライブラリを比較して、チームが最適な GNN ライブラリを選択できるようにします。

翻訳者 | 崔昊

校正 | 梁哲、孫淑娟

1. はじめに

この記事では、Deep Graph Library (DGL) と PyTorch Geometric という 2 つのグラフ ニューラル ネットワークを比較し、チームに適した GNN ライブラリを選択できるようにします。

2. グラフニューラルネットワークDGLとPyTorch Geometricの比較

グラフベースのディープラーニングとは何ですか?一般的に言えば、グラフはエッジとノードによって形成されるシステムであり、ノードには何らかの内部状態があり、その状態は、ノードを接続するエッジによって定義される現在のノードと他のノードとの関係によって変更されます。同時に、これらの接続とノードの状態はさまざまな方法で定義できます。

ディープラーニングでは、通常は行列乗算または畳み込みを介して、データに非線形変換を繰り返し適用します。ディープラーニングとグラフを組み合わせることで、グラフニューラルネットワーク (GNN) の分野が急速に発展しました。

グラフは、ソーシャル ネットワーク、分子、その他多くの種類の理論システムなど、ノードと関係によって定義されるあらゆるシステムに便利なフレームワークを提供します。グラフとして定義されたデータを使用すると、研究対象のシステムに関する意味のある構造データと、豊富な数学的およびアルゴリズム的ツールが利用できるようになります。

さらに重要なのは、グラフは行列数学を使用して記述および操作できるため、グラフはディープラーニングの分野でも重要な追加要素となり、長年にわたって同じ数学プリミティブをほとんど使用する高速ディープラーニング ライブラリの開発から大きな恩恵を受けてきたことです。

隣接行列はグラフ内のエッジ接続を表します。 riversunder によるパブリック ドメイン画像

グラフは、多くの種類の問題に対する豊富なフレームワークを提供し、過去数十年にわたってディープラーニング ニューラル ネットワークの大きな成功を可能にしてきました。グラフ ニューラル ネットワーク (GNN) がますます注目を集め、独自のブレークスルーを達成したことは間違いありません。

これまでのところ、グラフディープラーニングにおける最もエキサイティングな成果は、DeepMind が開発した AlphaFold と AlphaFold2 であり、構造生物学におけるタンパク質構造予測という長年の課題の解決に大きな進歩をもたらしました。

グラフ ニューラル ネットワークは、創薬、ソーシャル ネットワーク、基礎生物学、その他多くの分野で無数の重要な用途があるため、グラフ ニューラル ネットワークを操作するためのオープン ソース ライブラリが数多く開発されてきました。

これらのオープンソース ライブラリの多くは十分に成熟しており、運用や研究に使用できますが、新しいプロジェクトを開始するときに使用する適切なライブラリを選択する際には、考慮すべき要素が多数あります。

最も重要な GNN ライブラリの選択は、チームの既存の専門知識との互換性に基づいています。PyTorch の使用に慣れている場合は、PyTorch Geometric が適切な選択ですが、バックエンドとして PyTorch を使用した DGL を使用することもできます (DGL はバックエンドとして TensorFlow を使用することもできます)。

同様に、TensorFlow と Keras に精通している場合は、Spektral の方が価値があるかもしれません。新興の JAX エコシステムを使用して開発したい場合は、Jraph が GNN プロジェクトに適している可能性があります。

もちろん、チームで Python よりも Julia を好む場合は、Flux.jl 機械学習エコシステムをベースにした GeometricFlux.jl または GraphNeuralNetworks.jl を検討することもできます。

Julia で書かれたその他のツール Julia プログラミング言語自体と同様に、GeometricFlux.jl と GraphNeuralNetworks.jl は、より成熟した Python の同等ツールほど有名ではなく、コミュニティもニッチですが、魅力的な利点がいくつかあります。 Julia ベースのツールの利点の 1 つは、Julia に組み込まれた「ジャストインタイム」コンパイルによる実行速度です。

PyTorch や TensorFlow などの言語や類似のライブラリが現在利用できるようになったことで、特定のタスクを達成する際の開発効率が大幅に向上しましたが、機械学習プロジェクトの効率に大きく貢献するもう 1 つの要素は計算速度です。

開発者の時間は多くの場合、貴重なリソースであり、コード自体の実行速度と比較して、機械学習プロジェクトでは過小評価されることがよくあります。しかし、GPU 上で効果的なハードウェア アクセラレーションを実現するためのライブラリが広く利用できなかったとしたら、ディープラーニングが成熟して適用されるまでにはおそらく長い時間がかかるでしょう。

しかし、効率的なソフトウェアがなければ、世界中のあらゆる専用ハードウェアの性能は最大限に発揮されません。この記事では、グラフ ニューラル ネットワークの計算に焦点を当てて、最も人気のある 2 つのオープン ソース ライブラリをベンチマークして比較します。比較のために、Python ライブラリ PyTorch Gemetric と Deep Graph Library (DGL) に焦点を当てます。名前が示すように、Pytork Geometric は Pytorh (およびスパース行列を処理するための多くの Pytorh 拡張機能) に基づいていますが、DGL はバックエンドとして Pytorh または TensorFlow のいずれかを使用できます。

DGL は、チャンピオンのタンパク質構造予測モデルである AlphaFold に大きな影響を与えた、平行移動および回転不変モデルである SE3-Transformer の開発に使用されました。 DeepMind の研究に触発され、Baker 氏の研究室はオープンソースの RosettaFold でタンパク質構造の予測に DGL を使用しました。

PyTorch Geometric は、GitHub で 13,000 を超えるスターを獲得している非常に人気のあるライブラリであり、PyTorch の経験がある人にとって便利で使い慣れた API を提供します。各 API を紹介し、Zitnik と Leskovec (2017) のタンパク質間相互作用 (PPI) データセットで同等の GNN アーキテクチャをベンチマークします。

PPI データセットは、マルチクラス ノード分類タスクを提示します。各ノードは 50 個の特徴で構成されるタンパク質を表し、121 個の非排他的ラベルが付けられます。

しばらくディープラーニング モデルを扱っている場合、Python ライブラリが登場したり消えたりするのを見たことがあるでしょう。 Google が 2015 年にオープンソース ライブラリ TensorFlow をリリースして以来、TensorFlow は広く採用されるようになりました。これまで、ディープラーニング ライブラリのレイアウトは、Theano、AutoGrad、Caffe、Lasagne、Keras、Chainer などのフレームワークで構成される多面的なものでした。

この期間中、ディープラーニングライブラリはすべて独立して開発されました。 GPU サポートが必要な場合は、CUDA を理解する必要があります。 PyTorch は 2016 年にリリースされ、ゆっくりと発展してきましたが、間違いなくディープラーニングの推奨ライブラリになるでしょう。同時に、TensorFlow は Keras を飲み込み、依然として生産プロセスで好まれています。

TensorFlow がバージョン 2.0 をリリースした時点では、PyTorch と TensorFlow という「2 つのライブラリ」間の競争になっているようでした。 TensorFlow は PyTorch のようにより動的になり、PyTorch はジャストインタイム コンパイルと Torchscript によって高速化しており、両者の違いはますます小さくなっています。

おそらく、2 つの主要なライブラリが徐々に収束しつつあるため、学術プロジェクト Autograd の後継である JAX は、機能、機能性、構成可能性を備えたディープラーニングの空きポジションを見つけました。DeepMind などの大手研究所も JAX に注目しています。

Jraph は、グラフベースのディープラーニング向けの DeepMind の JAX ベースのソリューションですが、TensorFlow プロジェクトの Graph Nets (この記事の執筆時点では 1 年以上更新されていません) と多くの機能を共有しています。

次のセクションでは、DGL と PyTorch Geometric をインストールして設定する方法と、各ライブラリを使用して 6 つの隠し層を持つグラフ畳み込みネットワークを構築する方法について説明します。また、PPI データセットでノード分類のトレーニング ループを構築し、それぞれが使用するグラフ データ構造 API の違いについても説明します。最後に、単一の NVIDIA GPU で 10,000 エポックのトレーニングを実行し、各 GPU の速度向上を比較します。

3. PyTorch ジオメトリック

PyTorch Geometric (PyG) は、標準の PyTorch によく似た直感的なライブラリです。データセットとデータ ローダーには一貫した API があるため、さまざまなタスクに合わせてモデル アーキテクチャを手動で調整する必要はありません。

1. インストール

PyTorch Geometric は、pip、PyTorch 1.10、Python 3.6、CUDA 10.2 を使用したシステム設定に基づいてインストールされたことに注意してください。

仮想環境pyg_env --python = python3
ソースpyg_env / bin / activate
pipインストール torch == 1.10.0
pip インストール torch - scatter torch - sparse torch - cluster \
トーチ-スプライン-変換 \
トーチ- 幾何学- f https://data.pyg.org/whl/torch-1.10.0+cu102.html

2. モデルとコード

Kipf と Welling が 2016 年の論文で説明したグラフ畳み込み層 (PyTorch Geometric の GCNConv と DGL の GraphConv) に基づくベンチマーク ライブラリのアーキテクチャを使用します。

PyTorch ジオメトリック グラフ レイヤーは PyTorch の API と非常によく似た API を使用しますが、PyTorch ジオメトリック バッチ クラスの edge_index 内のグラフ エッジを入力として使用します。ライブラリ内のバッチは、1 つ以上のグラフを内部ギャップのある大きなグラフに集約することを記述します。

グラフ畳み込みの場合、これらのバッチは行列乗算と結合隣接行列を使用して重み共有を実装しますが、Batch オブジェクトは batch と呼ばれる変数内のノードとグラフのマッピングも追跡します。

使用するグラフ畳み込みモデルを以下に示します。

DGLとPyTorch Geometricのベンチマークに使用されたグラフ畳み込みネットワークの図

コードでは、PyTorch の torch.nn.Module モデル クラスを継承してモデルが構築されます。

インポート時間
numpyをnp としてインポートする
輸入トーチ
torch.nnをnn としてインポートする
torch_geometric をインポートする
torch_geometric.nn からGCNConv をインポートします
torch_geometric.datasets からPPI をインポートします
torch_geometric.loader からDataLoader をインポートします

クラス GCNConvNet ( nn.Module ) :
def __init__ ( self in_channels = 3 out_channels = 6 ) :
super ( GCNConvNet self ) .__init__ ( )
自己.gcn_0 = GCNConv ( in_channels , 64 )
自己.gcn_h1 = GCNConv ( 64 , 64 )
自己.gcn_h2 = GCNConv ( 64 , 64 )
自己.gcn_h3 = GCNConv ( 64 , 64 )
自己.gcn_h4 = GCNConv ( 64 , 64 )
自己.gcn_h5 = GCNConv ( 64 , 64 )
自己.gcn_h6 = GCNConv ( 64 , 64 )
自己.gcn_out = GCNConv ( 64 , out_channels )

def forward (自己バッチ) :
x edge_index batch_graph = batch .x batch .edge_index batch .batch
x = torch.relu ( self.gcn_0 ( x edge_index ) ) です。
x = torch.relu ( self.gcn_h1 ( x edge_index ) ) です。
x = torch.relu ( self.gcn_h2 ( x edge_index ) ) です。
x = torch.relu ( self.gcn_h3 ( x edge_index ) )
x = torch.relu ( self.gcn_h4 ( x edge_index ) )
x = torch.relu ( self.gcn_h5 ( x edge_index ) )
x = torch.relu ( self.gcn_h6 ( x edge_index ) )
x = torch.dropout ( x p = 0.25 トレーニング= self.training )
x = self .gcn_out ( x edge_index ) です
x = トーチ.シグモイド( x )
xを返す

このモデルは入力としてテンソルを取らず、代わりに「バッチ」と呼ばれる変数(一般的なスタイル規則では「データ」と呼ばれることもある)を取ることに注意してください。バッチには、ノードがグラフにどのように対応し、これらのノードがどのように接続されているかを定義する追加情報が含まれています。

この違いを除けば、このモデルは標準的な畳み込みネットワークとよく似ていますが、GCNConv または同様のグラフベースのレイヤーを使用することは標準的な畳み込みではないという点が異なります。

トレーニング ループも PyTorch ユーザーにとっては非常に馴染み深いものですが、個々の入力テンソルではなくバッチ全体をモデルに渡します。ただし、トレーニング ループに入る前に、タンパク質間相互作用 (PPI) データセットをダウンロードし、トレーニングおよびテスト データ ローダーを設定する必要があります。

 num_epochs = 10000
1e-3 は 1e-3 等しい。

データセット= PPI (ルート= "./tmp" )
データセット= dataset.shuffle ( )

test_dataset =データセット[ : 2 ]
train_dataset =データセット[ 2 : ]

test_loader = DataLoader ( test_dataset batch_size = 1 )
train_loader = DataLoader ( train_dataset batch_size = 8 shuffle = True )

train_loader バッチの場合:
壊す

in_channels = batch.x.shape [ 1 ]
out_channels = データセット.num_classes

モデル= GCNConvNet ( in_channels = in_channels , \
アウトチャネル=アウトチャネル)
loss_fn = torch.nn.BCELoss ( )
オプティマイザー= torch.optim.Adam ( model.parameters ( ) lr = lr )
my_device = "cuda"torch.cuda.is_available ( ) の場合、それ以外の場合は"cpu"
モデル=モデル.to ( my_device )

これで、トレーニング ループを定義し、各エポックでの時間と損失を追跡する準備が整いました。

損失= [ ]
経過時間= [ ]
エポック= [ ]
t0 = 時間.時間( )

範囲( num_epochs ) 内のエポックの場合:

合計損失= 0.0
バッチカウント= 0
train_loader バッチの場合:
オプティマイザ.zero_grad ( )
pred =モデル(バッチ.to ( my_device ) )
損失= loss_fn ( pred batch.y.to ( my_device ) )
損失.後方
オプティマイザ.step ( )
総損失+= 損失.デタッチ( )
バッチカウント+= 1

平均損失=総損失/バッチ数
損失.append ( mean_loss )
エポック.append (エポック)
経過時間.append ( 時間.time ( ) - t0 )
エポック% 100 == 0の場合:
print ( f "エポック {epoch} での損失 = {mean_loss}" )

この時点で、コードは PPI データセットで PyTorch Geometric をベンチマークする準備が整いました。これらを用意しておけば、Deep Graph ライブラリで同等のモデルを構築するのがはるかに簡単になります。このモデルは、次のセクションで説明するコードとは若干異なります。

4. ディープグラフライブラリ、DGL

Deep Graph Library は、PyTorch または TensorFlow をバックエンドとして利用できる柔軟なライブラリです。このデモでは PyTorch を使用しますが、TensorFlow に慣れていて、グラフでのディープラーニングに使用したい場合は、「TensorFlow」を DGLBACKEND という環境変数にエクスポートすることで使用できます。

少なくとも、コードを調整して torch.nn.Module ではなく tf.keras.Model のサブクラスを作成し、keras API の fit メソッドを使用することができます。

1. インストール

繰り返しになりますが、インストールは CUDA 10.2 を使用するシステムで行われますが、CUDA 11 にアップグレードした場合、またはまだ CUDA 10.1 を使用している場合は、DGL Web サイトから正しい pip install コマンドを入手できます。

仮想環境 dgl_env --python = python3
ソース dgl_env / bin /アクティブ化
pipインストール torch = 1.10.0

pip でdgl - cu102 - f をインストールしますhttps://data.dgl.ai/wheels/repo.html

2. モデルとコード

DGL では、Kipf グラフと Welling グラフの畳み込み層は、PyTorch Geometric で使用される「GCNConv」ではなく「GraphConv」と呼ばれます。それ以外では、モデルはほぼ同じに見えます。

インポート時間
numpyをnp としてインポートする
輸入トーチ
torch.nnをnn としてインポートする

dgl をインポートする
dgl.nn からGraphConvをインポートする
dgl .data からPPIDataset をインポート
dgl.dataloading.pytorch からGraphDataLoader をインポートします
dgl.data.utils からsplit_datasetをインポートします

クラス GraphConvNet ( nn .Module ) :

def __init__ ( self in_channels = 3 out_channels = 6 ) :
super ( GraphConvNet self ) .__init__ ( )

自己.gcn_0 = GraphConv ( in_channels , 64 , \
allow_zero_in_degree = True )

self .gcn_h1 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )
self .gcn_h2 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )
self .gcn_h3 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )
self .gcn_h4 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )
self .gcn_h5 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )
self .gcn_h6 = GraphConv ( 64 , 64 , allow_zero_in_degree = True )

self .gcn_out = GraphConv ( 64 , out_channels , \
allow_zero_in_degree = True )

def forward ( self g features ) : を宣言します。

x = torch.relu ( self.gcn_0 ( g 特徴) )

x = torch.relu ( self.gcn_h1 ( g x ) )
x = torch.relu ( self.gcn_h2 ( g x ) )
x = torch.relu ( self.gcn_h3 ( g x ) )
x = torch.relu ( self.gcn_h4 ( g x ) )
x = torch.relu ( self.gcn_h5 ( g x ) )
x = torch.relu ( self.gcn_h6 ( g x ) )

x = torch.dropout ( x p = 0.25 トレーニング= self.training )
x =自己.gcn_out ( g x )

x = トーチ.シグモイド( x )

xを返す

入力としてバッチを渡す代わりに、g (DGL グラフ オブジェクト) とノード機能を渡すことに注意してください。

トレーニング ループを設定する場合もほとんど同じですが、モデルに渡す内容には特に注意する必要があります。

この場合、ノード機能は 'batch.ndata["feat"]' にありますが、ノード機能に使用される特定のキーはデータセットごとに異なることがわかりました。おそらく「feat」が最も一般的ですが、「node_attr」などもあり、一貫性のない API が少し混乱を招く可能性があります。

これは本当に痛い点でした。このデモではさまざまな組み込みデータセットを試しましたが、さまざまなデータセットに対応するためにコードの一部を書き直すことで開発が大幅に遅れたからです。当然のことながら、PyTorch Geometric で使用される Batch オブジェクトの一貫性が優先されます。

実際には、組み込みデータセットは使用されないため、一貫した内部スタイルは実際のアプリケーションでは問題を引き起こしません。

 __name__ == "__main__"の場合:
num_epochs = 10000
1e-3 は 1e-3 等しい。
私のシード= 42

データセット= PPIDataset ( )

# ランダムにデータセット分割を作成する
test_dataset train_dataset = split_dataset (データセット [ 0.1 0.9 ] \
シャッフル= True )
train_loader = GraphDataLoader ( train_dataset batch_size = 8 )
test_loader = GraphDataLoader (テストデータセット batch_size = 1 )

train_loader バッチの場合:
壊す

in_channels =バッチ.ndata [ "feat" ] .shape [ 1 ]
out_channels = データセット.num_labels
モデル= GraphConvNet ( in_channels , out_channels )

loss_fn = torch.nn.BCELoss ( )
オプティマイザー= torch.optim.Adam ( model.parameters ( ) lr = lr )
my_device = "cuda"torch.cuda.is_available ( ) の場合、それ以外の場合は"cpu"

モデル=モデル.to ( my_device )

損失= [ ]
経過時間= [ ]
エポック= [ ]
t0 = 時間.時間( )

範囲( num_epochs ) 内のエポックの場合:

合計損失= 0.0
バッチカウント= 0

train_loader バッチの場合:
オプティマイザ.zero_grad ( )
バッチ=バッチ.to ( my_device )
pred = model ( batch batch.ndata [ "feat" ] .to ( my_device ) )
loss = loss_fn ( pred batch.ndata [ "ラベル" ] .to ( my_device ) )
損失.後方
オプティマイザ.step ( )

総損失+= 損失.デタッチ( )
バッチカウント+= 1

平均損失=総損失/バッチ数
損失.append ( mean_loss )
エポック.append (エポック)
経過時間.append ( 時間.time ( ) - t0 )

エポック% 100 == 0の場合:
print ( f "エポック {epoch} での損失 = {mean_loss}" )

# テスト精度スコアを取得する
num_correct = 0 です
num_total = 0 です
モデル.eval ( )

test_loader バッチの場合:

バッチ=バッチ.to ( my_device )
pred = model ( batch , batch.ndata [ "feat" ] )
num_correct += ( pred .round ( ) == \
バッチ.ndata [ "ラベル" ] .to ( my_device ) ) .sum ( )
num_total +=予測形状[ 0 ] *予測形状[ 1 ]

np .save ( "dgl.npy" , \
{ "エポック" :エポック \
「損失」 損失 \
"time_elapsed" :経過時間} )

print ( f "テスト精度 = {num_correct / num_total}" )


3. 結果

PPI データセット上の DGL および PyTorch ジオメトリグラフ畳み込みネットワークのトレーニング曲線

単一の NVIDIA GTX 1060 GPU で実行し、PPI データセットで PyTorch Geometric と DGL を使用して 10,000 エポックにわたってモデルをトレーニングしました。

PyG はトレーニングを完了するのに 2,984.34 秒かかりましたが、DGL は半分以下の 1,148.05 秒でした。

両方の実行は同様のパフォーマンスで終了し、PyG では 73.35% のテスト精度、DGL では 77.38% でした。ランダム初期化によって各実行で何らかのチャンスが発生することが予想されます。

10,000 エポック後も損失は減少し続けているため、このモデル アーキテクチャは最終的にわずかに高い精度に収束すると予想できます (ただし、この実験では検証損失は追跡しませんでした)。

5. あなたにとって最適な GNN ライブラリはどれですか?

異なるライブラリ間でのトレーニング時間の大きな違いに人々は驚きました。 DGL と PyG はどちらも PyTorch 上に構築されているか、計算バックエンドとして PyTorch を使用しているため、どちらも 10% または 20% 以内に完了すると予想されます。

バッチ API は DGL の同等の API よりも直感的で一貫性があるため、実際には DGL を使用するよりも PyTorch Geometric を使用してトレーニング ループをセットアップする方が快適であることがわかりました。 PPI データセットに落ち着く前に、いくつかの異なるデータセットを試しましたが、それぞれがノード機能を取得するために DGL に異なるキーを使用しているようでした。

そうは言っても、DGL の使用中に遭遇したいくつかの小さな煩わしさは、DGL よりも長く PyG を使用しているため、ライブラリの慣れに関係している可能性があります。

さまざまなアーキテクチャやレイヤー タイプのパフォーマンスを調査することは確かに価値がありますが、適切なライブラリを選択するだけで 2 倍のパフォーマンス向上を達成できる可能性は低いでしょう。

開発者の時間はモデルの計算時間よりも少ないですが、この設定では DGL はほぼ 2.6 倍高速であるため、モデル ライブラリをトレーニングして切り替える価値があります。同時に、DGL エコシステムで発生する小さな問題も、慣れが増すにつれて解決されるでしょう。

DGL は PyTorch Geometric ほど人気が​​ないようですが、GitHub のスターとフォークの数 (DGL 13,700/2,400 対 PyTorch 8,800/2,000) からわかるように、大規模なコミュニティ サポートと豊富なドキュメントにより、DGL ライブラリは簡単に習得でき、発生する問題の解決にも役立ちます。

どちらを選択するかに関係なく、データをネットワーク化し、グラフにエンコードされた構造情報を学習できる環境であれば、多くの学習コンテンツを提供できます。また、ハードウェアとソフトウェアのサポートと高速スパース行列計算の改善により、GNN ライブラリへの投資の価値が高まります。

オリジナルリンク: https://dzone.com/articles/pytorch-geometric-vs-deep-graph-library

翻訳者紹介

51CTO コミュニティ エディター兼シニア アーキテクトの Cui Hao 氏は、ソフトウェア開発とアーキテクチャで 18 年の経験があり、分散アーキテクチャでは 10 年の経験があります。元HPの技術専門家。彼は情報を共有することに積極的で、60 万回以上読まれている人気の高い技術記事を多数執筆しています。 『分散アーキテクチャの原則と実践』の著者。

<<:  インテリジェントな顧客サービス チャット モジュールの 3 つのソリューションを比較すると、どれが気に入りましたか?

>>:  今後 30 年間、人工知能の時代において、どの職業が消滅し、あるいは存続するのでしょうか?

推薦する

DeepMind の最新研究: AI が人間に勝ち、より優れた経済メカニズムを設計 | Nature サブジャーナル

人工知能(AI)は人類社会を真に知的な時代へと導くことができるのでしょうか?人工知能産業は60年以上...

Baidu が AI ホームシアターのソフトウェアとハ​​ードウェアを統合したエコシステムを発表

2月28日、BaiduはXiaodu新製品戦略発表会で、Xiaodu TV CompanionとXi...

fBox アルゴリズムを使用して、高度に隠蔽された詐欺ユーザーを検出する方法

[51CTO.com クイック翻訳] インターネットの活発な発展とインターネットユーザーの継続的な増...

...

ボストン大学の「Platypus-70B」がHugging Face大型模型ランキングでトップに!効率的なデータセットと独自のLoRA微調整が鍵

Hugging Faceのオープンソース大型モデルのランキングがまた更新されました。今回のランキング...

ディープラーニングを使って夢に現れる物体を分析する(完全版)

[[197493]]この記事の主な内容は機械学習と神経科学を組み合わせたものであり、読者にはこれら...

5Gが企業に与える影響

画像ソース: https://pixabay.com/images/id-1069218/ 2024...

デジタル外交はAI外交へと進化している。どのような課題に直面するのだろうか?

外交活動に関して、近年最も議論されている概念は「デジタル外交」であろう。 2010年には、当時米国務...

再帰アルゴリズムの時間計算量について十分に理解していない

[[414048]]この記事では、面接の質問と面接のシナリオを使用して、再帰アルゴリズムの時間計算量...

MITチームの新しいテストはAIの推論と人間の思考を比較する

AI が洞察を導き出し、意思決定を行う方法は謎に包まれていることが多く、機械学習の信頼性について懸...

心でタイピング、中国で脳コンピューターインターフェースの新記録が樹立されました!

手やキーボードを使わず、思考だけに頼って、1分間に691.55ビットをコンピューター画面に出力できま...

...

OccNeRF: LIDARデータの監視は不要

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

北京市、企業のコンピューティングパワー使用コストを削減するためのAIコンピューティングバウチャー実施計画を発表

10月11日、北京市経済情報化局は「人工知能コンピューティングパワーバウチャー実施計画(2023~2...