>>1
▼Google Colaboratoryとは?
・Jupyter NotebookのGoogle板(クラウド開発)
・呼称はグーグル・コラボラトリー、グーグルコラボ
・ >>1
▼特徴
・開いて3秒でpython開発
・情報共有がしやすい
他人と開発環境が同じなのでクロスプラットフォームを気にする必要なし
まったく同じコードを実行すれば、同じ結果が得られる
実際にできたこと
・機械学習各種
TensorFlowを使った画像認識など
・mecabによる自然言語処理
・Githubとの連携
・簡易のhttp.server、CGIサーバーの構築
・各種GoogleサービスのOauth認証、APIの利用
ローカル開発同様にgoogleサービス外のAPI利用、googleサービス内のAPI利用、
スプレッドシートの編集、photosへの投稿、bloggerへの投稿、
スクレイピング(規制されてるところもあり、プロキシを通せばOK)、メルマガサービス
Githubでの開発・プッシュ・動作確認など一連の開発作業、などなど
大抵のことはグルコラで完結 ちなみに本題ではないので割愛しましたが
スクレイピング、クロールはrobots.txtに従うようにしましょう >>1 8デフォルトの名無しさん2021/05/03(月) 16:22:18.97
有料板はちょっと上のランクのGPUが使える
メモリも大きくなる
無料版はページ開きっぱなしだと無操作で数時間?でセッションが切れるが
(ただしpipでインストールしたやつとかはそのまま)
有料版は24時間位つなぎっぱでOK
9デフォルトの名無しさん2021/05/03(月) 16:27:28.33
ただわからないのが、pipでインストールしたパケの再インストール方法。
pip uninstallしたり、install元のファイルをまるごと削除しようとも
なぜか最初にインストールしたパッケージがそのまま保持される
で結局、ランタイムを出荷時にリセットってやつをしなきゃいけないので(再接続に十数秒時間がかかる)、
gitでプッシュ→動作確認を多用するような開発下では有料板のメリットがない・・
pipのパッケージの再インストールする方法あったら教えてください
GoogleDriveとのアクセスの問題なのかローカルでは発生しないようなloadエラーで止まってたりする
>>9
一昔前は知らんけど
今は pip install で新しいバージョンが入るときに
自動で前のバージョンを uninstall してくれるから
基本はおまかせで良い
両方のバージョンを残したいなら
virtualenv >>11
>一昔前
というのは一昔前のgoogle colabってこと?
つまり、今のgoogle colabだと普通にpip installで>基本はおまかせで良い
ってことかな
自分の場合は、
パーッケージのソースコード編集する(バージョンはそのまま) → pip install
ってやってもインストール先のソースコードは更新されても、動作は前回インストールしたやつのまま。
しかし、(colabではなく)ローカルのPCでやった場合は普通に更新される ちなみにあれからいろいろやってて
出荷時にリセットはしなくてもよく
ランタイム>ランタイムを再起動
でもいけると気付きちょっと楽になった
理想はローカル開発と同じようにふつうにpip installで勝手に上書きしてくれることだが。
せっかくgithubと連携機能があるのに
パッケージ開発もcolab上でやろうとする時に
コード編集→プッシュ→実動作確認
のテンポ悪いのを改善してくれることに期待
18デフォルトの名無しさん2021/05/24(月) 17:32:33.56
ここまでプログラミングの敷居が下がればプログラマー人口が増え
google側にとっては人材確保の確率も高くなる、優秀な人材が生まれる可能性も高くなる
フォーク機能もあり、それらのデータを解析すれば
コーディングをもっと高度に自動補完してくれるようなAIを開発することができる
非常に合理的なサービスだと思う
しかしgoogleは損切りもおそろしく早いので、
採算が取れないと判断すればこのサービスは即終了となるだろう
採算は普通に取れないでしょ
スプレッドシートとかに比べたら所詮ニッチなサービスなんで、Googleの売上規模からすりゃ大したコストじゃないからCSR活動みたいなもんとして存続してるだけだろう
Google様の気まぐれで明日に終わっても全く不思議はないサービスだよ
>>16では、極力「ランタイム」>「すべてのセルを実行」だけで完結できるようにと
まずソースコードのテキストを変数に保持してから→書き込み保存
ってあえてやってるんだけど、エディタの機能が使えないので可読性が悪い。
セルの内容を別のセルで取得できたらいいのにな・・
もしくはセル自体にそういう機能があれば(まぁ簡単なプログラムのときにしか使わないけど)
もちろんgoogleドライブでファイル共有すればいいけど
ソースみたり編集したりするのにいちいちタブで開かないといけないっぽいので
何か良い方法ないものか colabで2つ教えて下さい
1. hyperasをimportするとランタイムを立ち上げる度にインストールが必要なんですが仕様ですか
2.loggerがリアルタイムに反映されないのも仕様ですか
2が不便過ぎてちょっと。。。
22デフォルトの名無しさん2021/05/27(木) 17:12:44.25
1. は制限時間終わったら再インストール必要
制限時間内なら(ランタイム再起動しなければ)そのままimportできた
しかし、たまにhyperas関係なく左下の方にサーバーエラー云々出てくるときがあるので
そういうときは再インストールしないといけないかも
2.は>リアルタイムに反映
とはどういうことだろう
import logging
import time
time.sleep(1)
logging.warning('warning')
time.sleep(1)
logging.error('error')
これは普通に表示される
最小構成が何かわからないのでなんとも言えないけど
>>22
ありがとうございます。
2はそもそも、ログファイルが生成されない事が頻繁に起こっていて困ってますが仕様では無いんですね。
一時的な不具合かも知れないので様子を見ます。 最近、TensorFlowのバージョン変わりましたか
colab上で、ngrok使ってwebsokcet通信ようやくできた
また近いうちにまとめてみる・・
なんかまだイマイチ理解できてない
いろんなブログで、Colaboratory上でsshdを動かした上、さらにngrokを使ってVSCodeを繋ぐ方法が紹介されてるけどさ
これってngrokでColaboratory側から自前のPCへの接続を受け入れるとどういう良いことがあるの?
あ、すまん、>>30はngrokの使い方を思いっきり勘違いして書いてしまった
ColaboratoryがIPくれないから使ってるわけか hoge='aiueo'
!echo $hoge | { read a;echo $a; }
これできないのがつらい
こっちはできるけど
!echo aiueo2 | { read v;echo $v; }
そういえば>>15解決したわ
一時的なライブラリ用のディレクトリ作ってそこにインストールして
環境変数でPYTHONUSERBASEに追加したらいけた
import os
os.environ['PYTHONUSERBASE'] =ここにライブラリ用ディレクトリのパス
これ以降は
!python -c ""
内でのみ有効
通常のコード実行からだとsys.pathはデフォルトのままだった
exportからでは保持されなかったので
import sys
sys.path.append()
で追加するといけた
あとでまとめとく あらためて>>15やってみたら
単に!python -c ""内だと更新されるみたい
あくまでノートブック上のコード実行でやると
更新されないだけだった
なので、結局PYTHONUSERBASE変えようが何しようが意味なかった
とりあえず動作確認で更新ガンガンしたいときは
!python -c ""で実行すればいいのかも 補足 >>35
pythonファイルに出力して
!python sample.py
みたいに実行しても良い
どうやらコードセルに直接書き込んだ場合だけ
再インストールしたパッケージは更新されないっぽい? コードセル上で文字列として扱うコードにも
コード補完されるような機能がほしいな
IPython.display.Javascriptなら
三連引用符使って
Javascript('''
console.log('hoge')
''')
みたいな書き方でもcolabの補完が効いて見やすくなるので
これのpython版がほしい
あらためてIPython.displayのドキュメントみてみたら
.HTMLがあった
これならエラーでずに引用符の中も赤1色にならない
Blenderのレンダリングに使ってる。
proだと二本GPUランタイム立てて24時間計算させてても停止されないな。これって何本までならいけるんだろ
41デフォルトの名無しさん2021/08/12(木) 15:35:29.63
ちょっとした開発は全部colabに移行したわ
グッバイvisual studio code
ほぼ使わなくなった
実用性がないから流行んないだろうけど、Wine + DXVKでOverwatchできたってな
GPUの制限は何時間後ぐらいに解除されるのだろうか?
Pro+なのにV100が割り当てられなくなったんだが、皆そんなもん?
my drive
の半角スペースがトラウマ的に気になっちゃうなあw
colaboとgdriveでは大丈夫なんだぞと言い聞かせている
隠しファイルというか
先頭.(ドット)名のファイル表示されないの地味にイラッとする
あと、左のドライブツリーに簡単に飛べるコマンドないのかな
コードに
"ここにディレクトリのパス"
これ書いてクリックして飛んでるけどメンドイ
>>46
.始まりが隠しファイルなのはUnixだから諦めろ。
ショートカット(シンボリックリンクは)ln -s コマンドで作れるぞ。
Unixコマンド覚えとくと色々捗るから覚えとけ >>47 トン
だが>>46はローカルのパソコンのことじゃなくてgoogle colab上の左カラムのことなんだが
コマンドで飛べなくないか?
今はコードセルに
"/content/drive/ほにゃららら/dir"
って書いてCtrl+クリックして飛んでるけど
▶(三角)マーク押して飛べたら
(制限時間後の復帰時の)ドライブに接続と同時に
作業ディレクトリ と 編集したいファイルを
左右カラムに自動で開けて捗るのになぁ、みたいな 改めて調べてたら解決できた
from google.colab import filesみたら
view関数があったわすげえ
from google.colab import files
files.view("パス")
files.view("パス")
で三角実行ボタン押したらイッパツでデフォルト作業環境整った
うおおお
欲を言えば、プルダウンする関数もあればいいのにな
まぁそれはjsでできそうだが
#!/usr/bin/bash
cat > data.txt << "EOF"
aaa
bbb
ccc
EOF
コードセル内で↑書けたらいいのにな
cat自体は使えるけど
コードセル実行で、かつ視覚的にみやすくするために
EOFで改行含めて実行
ってなるとバックスラッシュ必須?なので
でもそれやると(コードセルでは)エラーでるというジレンマ >>51
他のコマンドはバックスラッシュで連結できるけどね 今更気づいたけど
200番代とそれ以外のステータスを設定しても
# colab.googleusercontent.com
にリクエストすると200と500の二択で返されるっぽい
localhostで試したり、ngrokみたいにポート転送したときと挙動が違うので
当然クライアント側のレスポンスも変わってしまう
エラーハンドル以外はすべてJSONレスポンスで、
みたいに対応するしかないか
テキストファイルの編集ってどうやるの?
!sed -i "s/hoge/hage/g" abc.txt
とかで書き換えてるけど、めちゃ不便
56デフォルトの名無しさん2021/11/06(土) 16:57:36.76
>>55
置換目的ってことかな
それともエディタとして使いたいってことなら
from google.colab import files
files.view("/content/abc.txt")
で右カラムにエディタが出てくる
しかし、置換ツールなどはない(javascriptで拡張できなくはないと思う) 57デフォルトの名無しさん2021/11/06(土) 16:59:22.57
もしくは単純に
コードセルに
"/content/abc.txt"
と書いて、上でクリック
ポップアップした青色リンクを踏めば、右に編集エディタが出てくる
58デフォルトの名無しさん2021/11/06(土) 17:02:58.51
もしくは、左カラムのディレクトリアイコンをクリック
好きなファイルをダブルクリック
マウントしたgoogleドライブを使いたいときは
一番上(root) > content > drive
から接続できる
ファイルとかも右カラムで表示or編集できる
パスさえわかれば>>56で表示できる 59デフォルトの名無しさん2021/11/20(土) 14:03:48.59
driveへファイルの保存・読み書きするとき
反映されるまで結構ラグあるっぽいな
保存読書のジャーナリングまでするのはちょっとcolab特異すぎるので悩みどころ
60デフォルトの名無しさん2021/11/20(土) 19:29:25.72
補足 視覚的な反映が遅いだけでコード上の処理は問題ないっぽい? >>59
あと右カラムビューワ
.capの拡張子だと(左カラムからのダブルクリックから開くと)保存になってしまう colabでctrl+D使えるようになっててびびった
前から使えてたのかも
と、思ったらcontent直下のcgi-binは許可されてるっぽい・・
例えば
/content/sample/cgi-bin
とかだとアクセス権がない
これは仕様なのか
66デフォルトの名無しさん2021/12/06(月) 15:04:48.41
fastAPIとStreamlitとsqlalchemyとngrokを連携してしみた
Streamlitとapiそれぞれサーバーを起動
Streamlit側の【サンプルデータの登録ボタン】を押して
fastAPI(DBはsqlalchemy)側のapiを叩いて
データをPOST、GETしたデータを表とグラフで表示
のサンプル
CORSエラーがあるのでngrokを介することにした
apiサーバ起動時にngrokのパブリックホストを一旦テキストで保存してから
streamlitサーバー起動、という回りくどい感じになるけど
他に良い方法ないのだろうか
[すべてのセルを実行]ワンクリックのみで完結、再現
https://colab.research.google.com/drive/1I9KEAm0zvj3z12ooffWCF5vpKMCTyFRY
CRUD周りもっと改善したい 67デフォルトの名無しさん2021/12/08(水) 05:32:38.71
アクセス多いからなのか、パブリックなngrokがたまにwelcom画面になってしまうな
68デフォルトの名無しさん2021/12/08(水) 07:01:51.29
>>37の問題ようやく解決したかも
%%writefile hoge.py
print("hello world")
これでコードセル内で
・pythonは実行させずに
・pythonエディタを使いつつ
・ソースをローカルへ保存
全部達成できた
今までのやつも書き直さないと・・ 69デフォルトの名無しさん2021/12/08(水) 07:04:00.46
70デフォルトの名無しさん2021/12/08(水) 13:07:26.16
71デフォルトの名無しさん2021/12/08(水) 13:39:20.61
72デフォルトの名無しさん2021/12/08(水) 15:17:08.78
73デフォルトの名無しさん2021/12/09(木) 21:46:22.14
localtunnel、時間帯のせいか重いな・・
Connection timed out.ばっかり
74デフォルトの名無しさん2021/12/10(金) 11:34:43.00
この時間はさくさくだなlocaltunnel
アメリカ時間は重いのかも
75デフォルトの名無しさん2021/12/11(土) 13:50:37.02
76デフォルトの名無しさん2021/12/11(土) 14:23:02.22
st.form_submit_buttonとst.buttonの使いどころの違いってなんだろ・・
結局requestsで処理するし。
DOMやらformウィジェットに内包されているか否か
という見た目の違いだけなのだろうか
77デフォルトの名無しさん2021/12/11(土) 15:49:04.85
78デフォルトの名無しさん2021/12/11(土) 19:35:46.51
79デフォルトの名無しさん2021/12/11(土) 19:37:44.98
80デフォルトの名無しさん2021/12/11(土) 19:44:37.83
メモ >>78
データテーブルの中に編集ボタンを入れるときは
st.buttonのラベルが全て”編集”、のように同じ文字列になるので
st.sidebar.button(label=f"編集", key="ここに一意な数値(dataのインデックスなど)"
としてやるといい 81デフォルトの名無しさん2021/12/11(土) 19:46:28.23
訂正 >>80
st.button(label=f"編集", key=ここに一意な数値(dataのインデックスなど) 82デフォルトの名無しさん2021/12/11(土) 20:59:07.55
st.tableでrowの中にbuttonやらイベント付加できるかと思ったが
どうも標準装備ではないっぽいのか・・
markdownでテーブルっぽく構築して
その過程で逐次配置しなきゃいけないかも
83デフォルトの名無しさん2021/12/12(日) 00:48:42.97
st.date_input
タイムゾーン設定が無い?ので
st側のUTCでのmin_value < min_valueの日本時間の日付け
となるとエラー起こる
今だと
UTCは11日 < Asia/Tokyoは12日
colab関係ないけど
84デフォルトの名無しさん2021/12/15(水) 16:57:37.87
85デフォルトの名無しさん2021/12/15(水) 21:34:29.83
86デフォルトの名無しさん2021/12/18(土) 15:41:58.19
87デフォルトの名無しさん2021/12/21(火) 14:50:45.39
st.spinnerはwithスコープ内の処理も消えてくれたらいいのにな
88デフォルトの名無しさん2021/12/23(木) 22:04:16.45
st.empty()と.container()便利だな・・
これ使えばページ遷移9割解決しそう
89デフォルトの名無しさん2021/12/26(日) 19:25:49.44
90デフォルトの名無しさん2021/12/28(火) 06:53:56.62
91デフォルトの名無しさん2021/12/28(火) 13:03:16.95
92デフォルトの名無しさん2021/12/28(火) 14:16:59.18
haarcascade_frontalface_alt2.xmlにしたら斜めの顔も認識するようになったので変更しといた >>91 93デフォルトの名無しさん2021/12/31(金) 18:31:46.34
95デフォルトの名無しさん2022/01/11(火) 16:33:00.70
>>94
opendrがpython3と互換性がなくてpython2でインストールできるけど
かといってpytorchがpython2ではエラーが出るところで詰んだ 現在の時間を取得をするとグリニッジ標準時になってしまうんですが、日本時間で使用することはできないでしょうか?