【Memo】Google Colaboratoryの90分セッション切れ対策 --- Pythonをつかう! ---
やること
Google Colab はプログラム実行中でも、何もさわらないと90分経過でプログラムが止まってしまいます。
このセッション切れ対策として、Google Chromeのアドオンを使う方法やスクリプトを実行する方法が紹介されていましたが、アドオンがうまくいかなかったので、Pythonプログラムで画面を定期的にクリックするという原始的な方法のシンプルプログラムを書きましたので、その紹介です。
やりかた
pyautoguiモジュールをインストールする
画面をクリックするのにpyautoguiモジュールを使用します。pipを使って普通にインストールします。
pip install pyautogui
Google Colaboratoryを動かす
いつもどおりにColabでプログラムをはしらせます。ブラウザはなんでもOKです。
対策プログラムを動かす
ターミナルかエディタから、以下のプログラムを動かします。一応、for_colab.pyと名付けてますが、自由に名前をつけて保存、実行してください。
for_colab.py
#! python3 # -*- coding: utf-8 -*- # colabを継続して使う import time import pyautogui print() print('''10分ごとにマウスカーソルを左右に少し動かし、クリックします。 12時間後に終了します。途中で停止するときは、Ctrl + c を押してください。 ''') try: dir = -10 counter = 0 while counter < 72: time.sleep(600) pyautogui.moveRel(dir, 0) dir = - dir pyautogui.click() counter += 1 # print('カウンター:', counter) # クリックしたときに出力したい場合はコメントアウト print('停止:12時間経過') except KeyboardInterrupt: print('停止:Ctrl + c による終了')
プログラムはとてもシンプルで、time sleepで10分待ったあと、ポインタを右(または左)に少し動かしクリックします。
それを72回(=12時間)実施したら終了します。
google colabに戻る
先ほどプログラムをはしらせたcolabに戻って、プログラムが動いているのを確認します。
colabのプログラムの最後の方に空欄のセルをいくつか作っておき、その場所にポインタをおいておきます。以上です。
注意事項
- 「for_colab.py」は定期的にクリックしますので、ポインターをどこに置いておくかが重要です。左右の動きを繰り返すので、全然違う方に動いていくことはありませんが、colabの方がスクロールしていて思いもかけないところをクリックしないように、最後にポインターを置く位置に気をつけてください。
- colabとは別のプログラムですので、colabの計算が終わっても当然「for_colab.py」は止まりません。colabの計算が終了したら、ctrl-Cで「for_colab.py」を停止させてください。私は止め忘れていて、なんかパソコンの動きが変になった、と思ったらバックで「for_colab.py」が動いてました...
- 10分間隔でクリックしますが、その前にパソコンがスリープしないように、スリープまでの時間は10分超に設定してください。
- 単純に時間がきたらクリックするだけの機能ですので、動作中は別の作業はできません。睡眠学習用として使用ください。
プログラム「for_colab.py」は10分間隔でクリックするようにしていますが、colabのルール的には90分以内にクリックすればよいので、time sleepの値を各自の好みで変更してください。
また、クリック時にクリックしたことを確認したければ、コメントアウトしているPRINT文を有効にしてください。
単純なプログラムですので、使いやすいように変更して使ってみてください。
Google Colaboratoryは無料でGPUが使用できるので、機械学習の訓練にとても便利ですよね。 寝ている間にGoogle先生に訓練してもらいましょう。
'--------------------おしまい--------------------'
【Memo】Ubuntu18.04をリモートで動かす! --- MacやUbuntuから ---
やること
Ubuntu18.04のパソコンを他のUbuntuやMacからリモートでUbuntuを動かします。VNC接続を使ったリモートデスクトップやファイルの受け渡しを行います。今回はLANの中で動かすことを前提にしています。LANの外から接続する場合はTeamViewerを使っています。
私の場合はUbuntuを24時間稼動のデータチェックマシンとして使用しているので、そのマシンにアクセスするときに使用しています。データチェックマシンはひっそりとお家の片隅においておき、必要時にいつも使うPCからアクセスして情報をとってきてます。便利です。
なおここでは、ホストPC=操作されるPC(Ubuntu18.04)、クライアントPC=操作するPC(Ubuntu18.04 または Mac)とします。
使用している感想
ググれば、いくらでも方法はでてきますので、感想を先に書いときます。
- クライアントPCがUbuntuの場合は快適
ホストPCが非常に古い(7、8年落ちかな?)PCのため、PC自体の動きがもっさりしてますが、作業は問題ないです。どちらの端末を動かしているのかを錯覚するときあります。ファイルのやりとりもファイルアプリ(Nautilus)で簡単です。
- クライアントPCがMacの場合は、快適とはいえない
Macの場合は、スクロールをしたときの表示がニョロニョロ?とした動きで違和感があります。Macで使用していて最も気になるのが、ポインタの矢印です。MacのポインタとUbuntu(ホストPC)のポインタの両方が表示されます。もちろん有効なのはホストPCのポインタですが、動かすのはMacのポインタです。ホストPCのポインタの動きに遅れがありますので急ぐと違うところクリックしてしまいます。
とはいっても、動作確認やプログラムの微修正などに問題なく使用しています。
ホストPC(Ubuntu18.04)の設定
リモートデスクトップ(ホストPC)の設定
先人のお知恵を活用させていただき、以下に従って設定します。
minoru.okinawa
流れは以下です。
- 画面共有をオンにする (設定→共有→画面共有 )
- サスペンドに入らないようにする (設定→電源→自動サスペンド オフ)
- ホストPCのローカルIPアドレスを確認する (端末→ ifconfig)
- Macからつなぐ場合、Ubuntuの暗号化通信をオフにする
ここで、一番つまずいたのは 4. です。Ubuntuから接続するときは実施する必要がありませんが、実施せずにMacから接続しにいくと、「リモートコンピュータのソフトウェアが、このバージョンの画面共有と互換性がないようです。」といわれて接続できません。
【Ubuntu 20.04/18.04 Desktop】WinやMacパソコンからVNCでリモート接続し画面共有する | The modern stone age.をみつけ、端末から以下のコマンドを入力しましたが接続できなかったです。
gsettings set org.gnome.Vino require-encryption false
原因はホストPCにAnacondaをインストールしていたため、端末の環境が(base)の仮想環境となっていたからでした。端末の開始の文字が(base)と表示されている場合は(base)にいますので、baseから脱出します。その後、さきほどのコマンドを入力したらOKでした。
conda deactivate
gsettings set org.gnome.Vino require-encryption false
余談ですが、Ubuntuのデスクトップ画面の上部に表示されている時間表示を月日をいれたいときも、(base)環境から出ていないと機能しません。(base)からでて、以下のコマンドをいれてください。
gsettings set org.gnome.desktop.interface clock-show-date true
ファイル受け渡し(ホストPC)の設定
リモートデスクトップとOneDriveを使えばファイルを受け渡しができますが、Ubunutu同士ならsshを使ってファイルアプリ(Nautilus)でホストPCにアクセスできます。一旦設定すれば、次回以降は簡単に接続でき、ドラッグ&ドロップでファイルコピーできて便利です。
これも同じ方の記事から。
minoru.okinawa
やることはひとつ。
クライアントPC:Ubuntu18.04の設定
リモートデスクトップ(クライアントPC:Ubuntu)の設定
やはり先ほどのリンクと同じ方法です。
minoru.okinawa
設定を保存しておけば、次回からはRemminaを立ち上げたら、候補として表示されているのでダブルクリックひとつで接続できます。
ファイル受け渡し(クライアントPC:Ubuntu)の設定
こちらは参考にした記事と若干違いましたので、流れを書きます。
- ファイルアプリ(Nautilus)を立ち上げる
- 「他の場所」を選択する
- ウインドウの一番下の「サーバーのアドレスを入力...」のところに、「ssh://ホストPCのIPアドレス」を入力し、その右の接続をクリック
- 英語で、「ホストPCのIPの存在が証明できない・・・・」と聞かれる。「とにかくログインする」をクリックする
- ホストPCのユーザ名とパスワードを聞かれるのでホストPCにログインするときのユーザー名、パスワードを入力し、右上の接続、をクリック
- ホストPCがマウントされる。
一回接続がすると次からは「サーバーのアドレスを入力...」の右側の▼をクリックすると、最近使用したサーバーとして表示されるので、それをクリックすればOK。
クライアントPC:Macの設定
リモートデスクトップ(クライアントPC:Mac)の設定
今回はこちらの方のお知恵をお借りします。
www.yokoweb.net
流れは以下です。
- Finder → 移動 → サーバーへ接続... (コマンド+K)
- 「vnc://ホストPCのIP:5900 」と入力し、接続をおす
- パスワードを聞かれるので、ホストPCの画面共有で設定したパスワードを入力
- 画面共有となり、接続完了
ファイル受け渡し(クライアントPC:Mac)の設定
これはあまり必要性がなかったので設定をしていません。
とりあえずOneDriveを使えばいけます。
gen-todoroki.hatenablog.com
'--------------------おしまい--------------------'
【Memo】Ubuntu 18.04でOneDrive を使う! --- 導入からデスクトップ上への起動時の自動マウントまで ---
やること
Ubuntu18.04でMicrosoftのOneDriveを使用できるように設定します。
起動時にクラウドディスクをマウントします。
いま複数のパソコンでファイルを共有にするには、MicroSoft のOneDrive、DropBoxなどのクラウドストレージの利用が便利です。以前DropBoxを愛用していましたが、DropBoxの無料版が3つの端末にしかインストールできなくなり、Office365を契約してOneDriveが1TBまで使用できるようになったことから、今はOneDriveを主に使用してます。しかし、OneDriveはWindowsやMacには専用アプリがありますが、Ubuntuにはありません。そこで、使用できるようにセッティングしました。いま三種混合でパソコンを使っているので、Ubuntuともデータやりとりができ、便利です。
ここでは、
Rcloneをインストール
Microsoftからはクライアントソフトがありませんので、いろいろなクラウドストレージサービスをUbuntuで使える「Rclone」を使用します
Rclonerclone.org
Rcloneのページでインストール手順は書いてますが、全部英語なので実施したことをメモっていきます。
これからすべて「端末」からの作業となります。
インストール
curl https://rclone.org/install.sh | sudo bash
もし、curlがインストールされていなければ先に「sudo apt install curl」でインストールをしておいてください。
Rcloneの設定
設定の実行
rclone config
設定項目が表示されていくので、順次入力していく。入力する文字を:の後ろに記載します。
- 新しく設定するので、nを入力: n
- name> と聞かれるので、接続に使用する名前を入力する(自由でよい): onedrive
- ストレージのTypeを聞かれるので、その数字を入力する。実行したときはonedriveは23でした。増えていっているので変わっていた場合はonedriveの番号を入力してください: 23
- 「Microsoft App Client Id. Leave blank normally.」と聞かれるので、Enterキーのみを押す。: Enterキーのみ
- 「Leave blank normally」とある質問は、Enterキーのみを押す。: Enterキーのみ
- 「Remote config. Use auto config?」自動設定しますか?と聞かれるので、yを入力 : y
- Webブラウザが起動し、Microsoft OneDriveにログインする。「Success!」と表示されたら、端末に戻る。
- Onedriveのタイプを聞かれるので、使う番号を入力する。通常はPersonalで1。: 1
- 確認事項があるので、確認していく。通常、y:y
設定が終わったら、rcloneを終了させて、設定完了です。(メニュー表示になったら、qを入力)
設定が成功していたら、以下のコマンドでOneDriveのフォルダが表示されます。
rclone lsd onedrive:
マウントする
最初にマウントするディレクトリを作成します。これは最初の1回だけでよいです。
mkdir onedrive-mount
次のコマンドでマウントします
rclone --vfs-cache-mode writes mount onedrive: ~/onedrive-mount/ &
このままだと起動のたびにコマンドを入力してマウントしないといけないので、crontabに書き込んで起動時にマウントコマンドを実行するようにします。
- 端末に「crontab -e」と入力するとcrontabのファイルがエディタで立ち上がる
- そのファイルの最終行に「@reboot rclone --vfs-cache-mode writes mount onedrive: ~/onedrive-mount/ &」を追加し、保存・終了する。
- PCを再起動して、ディスクトップに「onedrive-mount」のアイコンが表示されていれば成功! 私の場合、なぜかわかりませんが10回に1回くらい起動時にマウントされないことがあります。
【追記】
rcloneでマウントしている場合、一つのフォルダに多くのファイルが入っていると、そのフォルダを開いたときに表示にとても時間がかかります。
これはすべてのフォルダのファイルを読み込んでから表示するためです。ブラウザからOneDriveにアクセスすると画面の範囲しか読み込まないので、表示がはやいです。
フォルダの中のファイル数が多い場合はフォルダに分けて保存するか、ファイルが多いフォルダにアクセスするときはブラウザからアクセスするのがよいです。
'--------------------おしまい--------------------'
【自己紹介】自分の使ってきたパソコンの履歴
今まで使ってきたパソコンと、そのときにやってたこと。
1. Windows7 時代
プログラミング、スタート期。
5,6年前のDell ノートパソコン。これにAnaconda を入れて、「退屈なことはPythonにやらせよう」を完了。「退屈なことはPythonにやらせよう」がWindowsをベースにしてたので、使いやすかったです。しかし、古いPCだったので、すべてが遅かった…
やったこと
・本: ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
・etc.
2. Mac 時代
MacBook Pro (13-inch, 2017, Thunderbolt 3ポートx 2)を購入。速さに感動する。OSはCatalina。Big Surにはまだバージョンアップしていない。はやいとは聞くけど、いつするか悩み中。。。
やったこと
・Web: paiza 無料講座
paiza.j・本: Pythonによるデータ分析入門 第2版
・本: Pythonではじめる機械学習
・本: TensorFlowとKerasで動かしながら学ぶ ディープラーニングの仕組み
・etc.
3. Ubuntu18.04 LTS 時代
GPU(RTX-2070)の載ったゲーミングノートパソコンを購入。Ubunutuをインストール。また、Windows7のサポート終了に合わせて1.のWindows7 PCにもUbuntu18を入れる。(実際はゲーミングPCの購入よりもこちらが先)
やったこと
・本:詳解ディープラーニング 第2版
www.amazon.co.jp
・本:つくりながら学ぶ! PyTorchによる発展ディープラーニング
・Web, 本, video:packt
4. 三種混合 ← 今、ココ。
ゲーミングノートパソコンは、元々にWindows 10 homeが入ってたので、Ubuntuとのデュアルブートで活用。いまはUbuntu(2台)、Mac、Windows10の三種混合で実施中。Python プログラミングはUbuntu、普段使いのパソコンはMac、WindowsでしかできなことはWindows10で。
--------------------おしまい--------------------
はじめに
ブログはじめました。
Pythonの初学者として、学んだことをテキストファイルにメモってましたが、ファイルがぐちゃぐちゃぐちゃでわかりにくなってきたので、備忘録【Memo】として書いていきます。
備忘録なら公開しなくてもよくないのでは?との考えもありますが、公開するということで他の方がみてもわかりやすく残すことで、後日、役に立つかなとの思いです。
また、いままで趣味として独学でコツコツやってきてますが、他の方々から、こうやった方が効率いいよとか、そこ間違ってるとか、のフィードバックがもらえたらありがたい、との期待もあります。
このとおりやって、動いたり動かなかったり、最悪、環境が破壊されたり、得したり、損したりしても、一切の責任はとりません。各自の自己責任でお願いします。
--------------------おしまい--------------------