94784


現在Google colab (Pro)上でPythonコードを使っています。

手元のサーバーではPythonを使ってmultiprocessingやmultithreadingによる並列計算もできます。  
Google colabを使用して、並列計算をしたいと考えています。

Google colabは頻繁に使用規約が変更されるため、自分なりに調べてはしましたが、いまいち把握できていません。  
皆様のcolabで並列計算したときの経験を教えていただけると幸いです。

現状:  
最大4 sessions(3GPU+1TPUを使った場合)で同時に計算は可能  
各sessionでは2cpuが使える

例えば、

  * 使用できるcpuの数を3以上にできるのか？
  * 同時に使用できるCPUの最大数は？
  * 計算時間の最大値は？（GPU使用では上限（3CPUを24時間回し続けた場合）があり、それを超えるとほぼ一日待機時間が発生します。）

など、情報・経験を共有していただけると幸いです。  
よろしくおねがいします。


CC BY-SA 4.0
2023-05-06T09:50:02.203
94769
2023-05-08T13:15:15.130
2023-05-06T10:47:50.350
3060
11048
question
python google-colaboratory python-multiprocessing
Google colabを使って並列化計算の状況について


Colab にはこの回答の時点では 3 つの有料プランがあるようです  
[最適な Colab のプランを選択する](https://colab.research.google.com/signup/pricing?hl=ja)
より

  * Pay As You Go
  * Colab Pro
  * Colab Pro+

「Pay As You Go」についてはその下の「コンピューティング ユニットとは何ですか？」辺りを読むとよいかも

計算時間については

> 料金がかからないバージョンの Colab の場合、可用性と使用パターンによっては、ノートブックは最長で 12 時間動作します。Colab Pro と
> Pay As You Go では、コンピューティング ユニットの残量に応じてコンピューティングの可用性が高くなります。

「バックグラウンド実行」辺りにも説明があります

* * *

CPU コア数についての説明は上記ページには見当たらないけど, 次のようにして調べることが可能  
(2行目以降は出力内容)

[code]

    !cat /proc/cpuinfo
    # processor : 0
    # vendor_id : GenuineIntel
    # cpu family    : 6
    # model     : 79
    # model name    : Intel(R) Xeon(R) CPU @ 2.20GHz
    # stepping  : 0
    # microcode : 0xffffffff
    # cpu MHz       : 2199.998
    # cache size    : 56320 KB
    # (中略)
    
    # processor : 1
    # vendor_id : GenuineIntel
    # cpu family    : 6
    # model     : 79
    # model name    : Intel(R) Xeon(R) CPU @ 2.20GHz
    (…略…)
    
[/code]

あるいは Pythonでは

[code]

    import psutil
    
    mem = psutil.virtual_memory().total
    free_mem = psutil.virtual_memory().available
    print(mem, free_mem, f'{psutil.cpu_count()=}')
    
[/code]

有料プラン使っていないので, Web調べた限りでは以下のようです  
[CoLab
Benchmarking](https://github.com/jeffheaton/present/blob/master/youtube/colab/colab_starting.ipynb)
より

  * Google CoLab Pro (High-RAM) (as of 2021-12-20) 
    * **CPU Count: 4**
    * Memory: 25GB
  * Google CoLab Pro+ (High-RAM) (as of 2021-12-20) 
    * **CPU Count: 8**
    * Memory: 51GB

ただし Pythonには GIL があるので, マルチスレッドにしても性能は上がりません。以下のような対処が必要でしょう

  * NumPy あるいはその他の (Pythonで実装されていない)演算であれば(スレッドであっても) GIL の影響は受けない
  * [multiprocessing](https://docs.python.org/ja/3/library/multiprocessing.html) などのプロセスベースの並列処理を行う


CC BY-SA 4.0
2023-05-08T13:15:15.130
94784
2023-05-08T13:15:15.130
43025
94769
answer