質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

3945閲覧

jupyternotebookはメモリの制限がありますか

alfald

総合スコア19

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2021/09/29 00:05

編集2021/09/29 02:32

anacondaからjupyternotebokを起動して機械学習を行っています。
その際にCPUは大量に消費するのですが、メモリは全然使用していません。
これは普通なのでしょうか。
普通ではないのでは、解決策はありますでしょうか。

ちなみに、CPU8コア16スレッドあり、メモリは32Gですが、実際にメモリは6Gくらいしか使用されていません。処理時間は12時間以上かかっています。

##追加情報
予測部分のコードを以下に示します。
使用している訓練データのサイズは740kBです。

#学習を実行 xgbr = XGBRegressor(learning_rate=l, max_depth=d, n_estimators=n, random_state=0) xgbr.fit(X_train, y_train) #予測 y_pred = xgbr.predict(X_val)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/09/29 02:06 編集

> jupyternotebookはメモリの制限がありますか そういう疑問を持つのは、同じコードをJupyterを使わずに直接Pythonで実行した場合はもっとメモリーを使うことを確認した上で、そうならないのはナゼ? って思うからですか?
y_waiwai

2021/09/29 01:37

なにを解決しようとしてるんでしょうか
jbpb0

2021/09/29 02:07 編集

https://www.tensorflow.org/tutorials/images/cnn からノートブックをダウンロードして、当方のGPU無しWin 10パソコンでJupyter起動して、コードは無修正で実行したら、メモリー使用量は2GBも行きませんでしたが、「model.fit()」に「batch_size=10000」を追加して実行したら、メモリー使用量は増減しますが最大で4GBを超えました 「batch_size=15000」の場合は、最大で6GB弱まで行きました 当方でテストしたパソコンのメモリー容量が8GBなので、「batch_size」の数値はそれくらいまでしか指定できませんでしたが、質問者さんの環境 > メモリは32Gですが、 なら、もっと大きな数値(最大50000まで)を指定できますので、そうしたらたぶん > メモリは6Gくらいしか使用されていません。 よりもメモリー使用量は増えると思います 以上のようにして、他のコードでメモリー使用量を確認してみたらいいと思いますよ 他のコードでなら、もっとメモリーが使われるのなら、現状の > メモリは6Gくらいしか使用されていません。 になるのは、質問者さんが現在実行してるコードがそうなってるから、ということになりますよね
jbpb0

2021/09/29 02:21

上記のテストをした時のCPU使用量は、「batch_size」指定に関わらず(メモリー使用量とは無関係に)、どの場合も目一杯使われました なので、CPUは目一杯使われるけど、メモリー使用量はそれほどでもない、というコードの書き方はできます (使ってるデータや機械学習のアルゴリズム次第ですが) > これは普通なのでしょうか。 コードを開示してくれないと分かりません 質問者さんが使ってるデータやアルゴリズムの性質から、必然的にそうなるのかもしれないし、設定やコードを見直したら変わるかもしれないし
alfald

2021/09/29 02:26

> そういう疑問を持つのは、同じコードをJupyterを使わずに直接Pythonで実行した場合はもっとメモリーを使うことを確認した上で、そうならないのはナゼ? って思うからですか?(jbpb0) すみません。 そちらは検証していませんでした。 CPUとメモリはお互いに相関していると思っていたため、CPUが大量使用されているのに、メモリが全然使用されていないのは不自然だと感じたためです。 > なにを解決しようとしてるんでしょうか(y_waiwai) 処理を高速化したいためにメモリをもっと使用したいと考えています。 > jbpb0さん ありがとうございます。 試してみます。
alfald

2021/09/29 02:33

> 質問者さんが使ってるデータやアルゴリズムの性質から、必然的にそうなるのかもしれないし、設定やコードを見直したら変わるかもしれないし 設定は特にいじってないため初期設定のはずです。 コードは学習部分の情報を追加しました。
jbpb0

2021/09/29 04:08 編集

「X_train」と「y_train」のshapeを教えてください あと、「XGBRegressor()」でパラメータを指定するのに使ってる「l」「d」「n」の内容も教えてください
alfald

2021/09/29 04:10

X_train:(119, 288) y_train:(119,) です。
jbpb0

2021/09/29 05:10

「l」「d」「n」の内容も教えてください
alfald

2021/09/29 05:52

モデル作成時にfor文で回しているので変数になっています。
jbpb0

2021/09/29 06:12

適当にデータをでっち上げて、再現させてみようと思うので、典型的なものでいいので、教えてください
alfald

2021/09/29 07:22 編集

``` set_learning_rate= [0.01,0.1,0.2,0.5] set_max_depth = [x for x in range(1,50,1)] set_n_estimators = [x for x in range(1,1000,50)] for l in set_learning_rate: for d in set_max_depth: for n in set_n_estimators: ``` 今使用しているのだとこのように上記のようにfor文を回しています。
jbpb0

2021/09/29 10:00 編集

> メモリは6Gくらいしか使用されていません。 は、「XGBRegressor()」を実行してるPythonのプロセスだけのメモリー使用量ですよね? パソコンのメモリーのトータル使用量じゃないですよね?
jbpb0

2021/09/29 10:21

あと、質問とは直接は関係無いですが、 > set_n_estimators = [x for x in range(1,1000,50)] だと、「951」までしか計算されません for x in range(1,1000,50): print(x) を(ちゃんとインデント付けて)実行したら分かりますが、1から始まって50ずつ足されるので、 1, 51, 101...901, 951 となります 951の次は1001で、1001まで計算するには set_n_estimators = [x for x in range(1,1002,50)] とする必要があります 同様に、 > set_max_depth = [x for x in range(1,50,1)] だと、「49」までしか計算されません
alfald

2021/09/30 02:17

> 「XGBRegressor()」を実行してるPythonのプロセスだけのメモリー使用量ですよね? パソコンのメモリーのトータル使用量じゃないですよね? すみません。トータルでした。 「XGBRegressor()」の実行だけですと、1Gくらいでした。
jbpb0

2021/09/30 02:48

> 「XGBRegressor()」の実行だけですと、1Gくらいでした。 やはりそうですか 当方のWin 10パソコンのPythonで、mnistのデータ(28x28の画像データが60000サンプル)を1次元にして、「XGBRegressor()」で処理してみました その場合の「X_train」のshapeは「(60000, 784)」となり、質問者さんの条件 > X_train:(119, 288) よりも、かなり大きなものになりますが、それでもPythonのメモリー使用量は1〜2GBくらいにしかならず、 > メモリは6Gくらいしか使用されていません。 よりも少ないのは何でだろう? と思ったもので なお、パラメータは、条件が近くなるように、 > set_learning_rate= [0.01,0.1,0.2,0.5] set_max_depth = [x for x in range(1,50,1)] set_n_estimators = [x for x in range(1,1000,50)] から、だいぶ粗く間引いて設定しました また、Jupyterは使わず、コマンドプロンプト(ターミナル)上でPythonを起動して、そこで実行しました 「XGBRegressor()」は、Jupyterを使うかどうかには関係無く、そのくらいのメモリー使用量に収まるアルゴリズムなのだろうと思います 質問者さんも、Jupyterを使わない場合のメモリー使用量を確認してみてください > 「XGBRegressor()」の実行だけですと、1Gくらいでした。 と大差無いと思います
jbpb0

2021/09/30 02:55

また、私が最初の方のコメントで紹介したようなディープラーニングのコードを、「model.fit()」の「batch_size」の数値を変えながらJupyter上で実行して、Pythonのメモリー使用量を確認したら、Jupyter上の実行でもかなりのメモリーを使うことができることが分かると思います
alfald

2021/10/01 02:39

なるほど 検証含めていろいろありがとうございます。
guest

回答1

0

ベストアンサー

当方のWin 10パソコンのPythonで、mnistのデータ(28x28の画像データが60000サンプル)を1次元にして、「XGBRegressor()」で処理してみました

その場合の「X_train」のshapeは「(60000, 784)」となり、質問者さんの条件

X_train:(119, 288)

よりも、かなり大きなものになりますが、それでもPythonのメモリー使用量は1〜2GBくらいでした

パラメータは、条件が近くなるように、質問者さんの条件

set_learning_rate= [0.01,0.1,0.2,0.5]

set_max_depth = [x for x in range(1,50,1)]
set_n_estimators = [x for x in range(1,1000,50)]

から、だいぶ粗く間引いて設定しました

また、Jupyterは使わず、コマンドプロンプト(ターミナル)上でPythonを起動して、そこで実行しました

Jupyterを使ってるからメモリー使用量が少ないのではなく、「XGBRegressor()」はそのくらいのメモリー使用量に収まるアルゴリズムなのだろうと思います

投稿2021/10/08 07:15

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問