
Marsは、Numpy、Pandas、Scikit-Learn、その他多くのライブラリを拡大する大規模なデータ計算のためのテンソルベースの統一フレームワークです。
ドキュメント、中文文档
火星は簡単にインストールできます
pip install pymars火星にコードを提供したい場合は、以下の指示に従って、開発のために火星をインストールすることができます。
git clone https://github.com/mars-project/mars.git
cd mars
pip install -e " .[dev] "MARSのインストールの詳細については、MARSドキュメントのインストールセクションをご覧ください。
経由でローカルで新しいランタイムを開始する:
> >> import mars
> >> mars . new_session ()または、すでに初期化されている火星クラスターに接続します。
> >> import mars
> >> mars . new_session ( 'http://<web_ip>:<ui_port>' )Mars Tensorは、Numpyのようなおなじみのインターフェイスを提供します。
| numpy | 火星のテンソル |
import numpy as np
N = 200_000_000
a = np . random . uniform ( - 1 , 1 , size = ( N , 2 ))
print (( np . linalg . norm ( a , axis = 1 ) < 1 )
. sum () * 4 / N ) | import mars . tensor as mt
N = 200_000_000
a = mt . random . uniform ( - 1 , 1 , size = ( N , 2 ))
print ((( mt . linalg . norm ( a , axis = 1 ) < 1 )
. sum () * 4 / N ). execute ()) |
3.14174502
CPU時間:ユーザー11.6 s、sys:8.22 s、
合計:19.9秒
壁の時間:22.5秒
| 3.14161908
CPU時間:ユーザー966ミリ秒、SYS:544ミリ秒、
合計:1.51秒
壁の時間:3.77秒
|
火星は、ラップトップでも複数のコアを活用でき、分散設定でさらに速くなる可能性があります。
Mars DataFrameは、Pandasのようなおなじみのインターフェイスを提供します。
| パンダ | 火星データフレーム |
import numpy as np
import pandas as pd
df = pd . DataFrame (
np . random . rand ( 100000000 , 4 ),
columns = list ( 'abcd' ))
print ( df . sum ()) | import mars . tensor as mt
import mars . dataframe as md
df = md . DataFrame (
mt . random . rand ( 100000000 , 4 ),
columns = list ( 'abcd' ))
print ( df . sum (). execute ()) |
CPU時間:ユーザー10.9 s、sys:2.69 s、
合計:13.6秒
壁の時間:11秒
| CPU時間:ユーザー1.21 s、sys:212 ms、
合計:1.42秒
壁の時間:2.75秒
|
Mars Learnは、Scikit-Learnのようなおなじみのインターフェイスを提供します。
| Scikit-Learn | 火星は学ぶ |
from sklearn . datasets import make_blobs
from sklearn . decomposition import PCA
X , y = make_blobs (
n_samples = 100000000 , n_features = 3 ,
centers = [[ 3 , 3 , 3 ], [ 0 , 0 , 0 ],
[ 1 , 1 , 1 ], [ 2 , 2 , 2 ]],
cluster_std = [ 0.2 , 0.1 , 0.2 , 0.2 ],
random_state = 9 )
pca = PCA ( n_components = 3 )
pca . fit ( X )
print ( pca . explained_variance_ratio_ )
print ( pca . explained_variance_ ) | from mars . learn . datasets import make_blobs
from mars . learn . decomposition import PCA
X , y = make_blobs (
n_samples = 100000000 , n_features = 3 ,
centers = [[ 3 , 3 , 3 ], [ 0 , 0 , 0 ],
[ 1 , 1 , 1 ], [ 2 , 2 , 2 ]],
cluster_std = [ 0.2 , 0.1 , 0.2 , 0.2 ],
random_state = 9 )
pca = PCA ( n_components = 3 )
pca . fit ( X )
print ( pca . explained_variance_ratio_ )
print ( pca . explained_variance_ ) |
火星学習は、多くのライブラリとも統合されています。
Mars Remoteを使用すると、ユーザーは並行して関数を実行できます。
| バニラ関数呼び出し | 火星リモート |
import numpy as np
def calc_chunk ( n , i ):
rs = np . random . RandomState ( i )
a = rs . uniform ( - 1 , 1 , size = ( n , 2 ))
d = np . linalg . norm ( a , axis = 1 )
return ( d < 1 ). sum ()
def calc_pi ( fs , N ):
return sum ( fs ) * 4 / N
N = 200_000_000
n = 10_000_000
fs = [ calc_chunk ( n , i )
for i in range ( N // n )]
pi = calc_pi ( fs , N )
print ( pi ) | import numpy as np
import mars . remote as mr
def calc_chunk ( n , i ):
rs = np . random . RandomState ( i )
a = rs . uniform ( - 1 , 1 , size = ( n , 2 ))
d = np . linalg . norm ( a , axis = 1 )
return ( d < 1 ). sum ()
def calc_pi ( fs , N ):
return sum ( fs ) * 4 / N
N = 200_000_000
n = 10_000_000
fs = [ mr . spawn ( calc_chunk , args = ( n , i ))
for i in range ( N // n )]
pi = mr . spawn ( calc_pi , args = ( fs , N ))
print ( pi . execute (). fetch ()) |
3.1416312
CPU時間:ユーザー32.2 s、sys:4.86 s、
合計:37.1 s
壁の時間:12.4秒
| 3.1416312
CPU時間:ユーザー616ミリ秒、SYS:307ミリ秒、
合計:923ミリ秒
壁の時間:3.99秒
|
詳細については、火星のダスクを参照してください。
火星は熱心なモードをサポートしており、開発にフレンドリーでデバッグしやすくします。
ユーザーは、オプションで熱心なモードを有効にしたり、プログラムまたはコンソールセッションの開始時にオプションを設定したりできます。
> >> from mars . config import options
> >> options . eager_mode = Trueまたはコンテキストを使用します。
> >> from mars . config import option_context
> >> with option_context () as options :
> >> options . eager_mode = True
> >> # the eager mode is on only for the with statement
>> > ...熱心モードがオンの場合、テンソル、データフレームなどは、作成されるとデフォルトですぐに実行されます。
> >> import mars . tensor as mt
> >> import mars . dataframe as md
> >> from mars . config import options
> >> options . eager_mode = True
> >> t = mt . arange ( 6 ). reshape (( 2 , 3 ))
> >> t
array ([[ 0 , 1 , 2 ],
[ 3 , 4 , 5 ]])
> >> df = md . DataFrame ( t )
> >> df . sum ()
0 3
1 5
2 7
dtype : int64 火星はまた、レイと深い統合を持ち、RAYで効率的に実行し、コアレイの上に構築された機械学習および分散システムの大規模なエコシステムと相互作用することができます。
ローカルでレイランタイムで新しい火星を開始してください:
import mars
mars . new_session ( backend = 'ray' )
# Perform computationRay Datasetと対話する:
import mars . tensor as mt
import mars . dataframe as md
df = md . DataFrame (
mt . random . rand ( 1000_0000 , 4 ),
columns = list ( 'abcd' ))
# Convert mars dataframe to ray dataset
ds = md . to_ray_dataset ( df )
print ( ds . schema (), ds . count ())
ds . filter ( lambda row : row [ "a" ] > 0.5 ). show ( 5 )
# Convert ray dataset to mars dataframe
df2 = md . read_ray_dataset ( ds )
print ( df2 . head ( 5 ). execute ())詳細については、RayのMarsを参照してください。
火星は単一のマシンにスケーリングし、数千のマシンでクラスターにスケーリングすることができます。単一のマシンからクラスターに移行して、より多くのデータを処理したり、パフォーマンスを向上させたりするのはかなり簡単です。
火星は、クラスター内のさまざまなマシンで分散されたランタイムのさまざまなコンポーネントを開始することにより、クラスターに簡単にスケーリングできます。
ノードは、Webサービスを統合し、他のノードをワーカーとして残すスーパーバイザーとして選択できます。スーパーバイザーは、次のコマンドで開始できます。
mars-supervisor -h < host_name > -p < supervisor_port > -w < web_port >労働者は、次のコマンドで開始できます。
mars-worker -h < host_name > -p < worker_port > -s < supervisor_endpoint >すべての火星プロセスが開始された後、ユーザーは実行できます
> >> sess = new_session ( 'http://<web_ip>:<ui_port>' )
> >> # perform computation詳細については、Kubernetesの実行を参照してください。
詳細については、Run on Yarnを参照してください。
よろしくお願いいたします。