カタベログ

IT技術に関するブログを書きたい.食べ物関連はInstagramをご参照の事.

Alacrittyの導入

記事の目的

Alacrittyという新しいターミナルエミュレータを知ったので簡単に紹介する。

環境前提

# 項目 詳細
1 機種 MacBook Pro (13-inch, 2017)
2 OS macOS Catalina 10.15.4
3 CPU 2.3 GHz デュアルコアIntel Core i5
4 MEM 16 GB 2133 MHz LPDDR3
5 グラフィックス Intel Iris Plus Graphics 640 1536 MB

Alacritty とは?

GPUを用いて高速化を図ったターミナルエミュレータです。 誰かがTwitterで紹介してたので知りました。 ターミナルエミュレータサードパーティー製品はMacだとiTerm2が有名ですね。

github.com

導入方法

簡単に書けば以下です。 homebrewの導入方法は割愛しますが、公式サイトに書いてるコマンド実行するだけだから簡単ですね。 Githubには他のOSでのインストール手順も記載されてます。 英語が苦手な方はページ全体を翻訳かければ良いと思います。

  1. homebrew のインストール
  2. brew cask install alacrittyでインストール

起動結果

こんな感じ。デフォルトだと文字小さすぎて目がしょぼしょぼする。

f:id:tkm1988:20200509114844p:plain
Alacritty ScreenShot

設定ファイル

You can find the default configuration file with documentation for all available fields on the GitHub releases page for each release. Alacritty doesn't create the config file for you, but it looks for one in the following locations:

設定ファイルは自動的に生成されず、自分で指定の場所に置けば良いとのこと。 また、設定ファイルの雛形はGithubのリリースページにあるよだって。 という訳で、リリースページで"alacritty.yml"で検索かけると見つかるのでDLして所定の場所のいずれかに置けばOKです。

設定変えるのは気が向いたらやります。

SageMakerでApache Airflowが触れるので試してみた

きっかけ

2018年のAWS Re:Inventで発表されたあたりからずっと触ってみたいと思って何もしていなかった。 三連休だし、でも台風だから外に出れないしなので触ってみることにした。

方針

AWSさんは初心者に優しいのでSampleをGithubに公開してくれてます。 使わないのも勿体ないので使わせていただくことにした。 AWS CloudFormation使ってAmazon EC2Amazon S3Amazon RDS、 そしてAmazon SageMakerを使ってApache Airflowによる機械学習パイプラインのサンプルが作れます。

github.com

注意点

READMEにあるボタンから作ると、リージョンがオハイオになる。 自分はあらかじめ用意したサンプル用とは別のS3 Bucketに、 git cloneでローカルにダウンロードしたファイル全てあげた上で、 CloudFormationのスタックを作成することにした。

作業の流れ

READMEにあるように、EC2キーペアの作成をあらかじめ行います。 ボタンぽちぽちするだけで簡単にできちゃいます。

あとはスタックの作成ですが、これも簡単で入力するのは以下ぐらい。

  • Amazon S3 URLにあらかじめアップロードしておいたyamlファイルのURLを指定する
  • スタックに適当な名前をつける
  • RDS用のパスワードを設定する
  • あらかじめ作成したEC2のキーペアを指定する
  • S3 Bucket名をユニークかつ既存のバケット名に被らないように設定する

スタックを作成開始したら10分15分ぐらい待ってれば出来上がります。 うまくいかないときはスタックのイベントを確認してトラシューしましょう。 自分はS3 Bucket名あたりでS3の仕様を忘れててハマりました。

EC2のページでインスタンスDNS名を特定し、 httpでブラウザからアクセスすればAirflowがさわれます。

細かい話は、AWSさんは初心者に優しいので説明ページがあるのでそちらご覧ください。

aws.amazon.com

クロージング

CloudFormationのページでスタックを削除すれば S3 Bucket 以外は削除されます。 上述のページにあるように、空ではないS3 BucketはCloudFormationからは削除できません。

感想

Airflowのやり方でSageMakerを動かせるのは良い点だと思いました。 サンプルではEC2やRDSを使ったりしていますが、 ECSやEKSを使ったりみたいにインフラ構成を変えてみるとコスト最適化や柔軟性が生まれそうだなって思います。

PyConJP 2019(二日目)に参加した

#pyconjp

What's PyCon JP ?

公式サイトより引用。

PyConは、Pythonユーザが集まり、PythonPythonを使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。 PyCon JPの開催を通じて、Pythonの使い手が一堂に集まり、Pythonにまつわる様々な分野の知識や情報を交換し、新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。

pycon.jp

きっかけ

  • 学生時代(2010〜2013あたり)からPythonにお世話になっていた
  • 日本で一番有名なPythonのカンファレンスだから学びが多いのではないかと考えた
  • インフラ系に配属となったのでプログラミングから離れてしまいPythonと疎遠になった
  • 最近は仕事内容が変わったことを受けて仕事やプライベートで触れる機会が増えた
  • もっと外に出て中にいたら分からないことをもっと知ろうと思った

聴講したセッション

発表資料は概ねこちらに掲載されてます。

pyconjp.connpass.com

I will never restart! Automatic hot reloading in CPython

  • Python3では一度importしたモジュールを再読み込みするのにはimportlib.reload()を用いる
  • ちょっとした変更を反映するだけなのにサービスやサーバの再起動なんてことは不要にできる
    • ファイルの更新イベントを検知してimportlib.reload()すればいい
    • mighty_patcher(下部リンクご参照)を使ってイベント検知を実装する例を示してくれた
    • 調べてみるとwatchdogを使う例もQiitaに上がっているようなので初心者はそっちの方がいいかな
  • モジュール更新の手段であり誰でもいつでも自由にデプロイして良いという話じゃないことは留意したい思う

github.com

unittestで始めるユニットテスト入門

  • 学生プログラミングと社会人プログラミングの一番の違いはテストだと思っているのでお勉強のために参加
  • 人気の外部テストライブラリであるPytestへも移行しやすい標準ライブラリなので学ぶ価値が高いライブラリだと考える
  • 会場にいる多くの方々はunittestを使ったことがないようで、みんなどんなテストしているのかが気になった
  • with文をただのファイル読み書きの便利機能ぐらいにしか思っていなかったが、unittestでも使われるのでちゃんと知りたいなって思った

https://reiki4040.hatenablog.com/entry/20130331/1364723288/reiki4040.hatenablog.com

新米Pythonistaが贈るAirflow入門 & 活用事例紹介

  • 機械学習分野でよく使われているので気になって聴講
  • AirflowをAWS Fargateを基盤にAWS上でETLを実現していた
  • 改めて思う事としてはJP1とかとは狙っている層が違うなって思う
    • ジョブフローをPythonコードで定義するのですべてPythonに集約したい人たちのもの
    • Pythonを書けない人は使えない(当たり前)
    • Pythonでシステム運用のスクリプト書く人も珍しいので、あくまで業務系処理を書く人たちの選択肢だと思う

github.com

pytestによるCIレボリューション

  • 自分の出自ととても似てて驚き
  • 前段のセッションでunittestの話聞いてから聞いたので飲み込みやすかった
  • 今時のIDEVSCode、PyCharm)はどれもPytestに対応している
    • Emacs以外も使った方がいいかなってちょっと思った

その他

  • Lightnig Talk久しぶりに聞いた
  • Python製シェル xonshの紹介
  • pythonで、処理をより効率化するためのTips集
  • Python in the Belle II experiment
  • 当日応募の方による飛び込み
  • OSC in Hokkaidoで見ていたネタLTは意外には少ないなって思った
  • 備忘の意味も込めてポスターセッションやLTで調べた時に参考にしたURLを貼っておく
    • ほとんどQiitaじゃねぇか…

qiita.com qiita.com qiita.com qiita.com github.com

感想

  • 機械学習のブームもあってもっと人いるかと思ったけどそうでもなかった
    • 機械学習を前線で進めているのは昔からPythonとかを触っていた人たちだったとか?
    • SIerの人たちも一からモデル作る事しているなんてのはそこまで多くないだろうし、人数に影響しなかった?
    • 機械学習はそれに特化したコミュニティがあって、PyConのような広くPythonを扱った場所にはあまり出てこないのかも?
    • もちろん発表者や求人、企業ブースには機械学習関連の方々がいらっしゃったので、昨年比来場者急上昇だったのかもしれない
    • 1,160名が、チュートリアルやスプリントを合わせた参加者数らしい
  • これをきっかけにPythonエンジニアに転身できたらいいなって思った
    • もっとコミュニティが発展して欲しいし、それに寄与する方法の一つにもなるかな
  • 今度はちゃんと2日間全部出て学びをもっと得たい

Google Colaboratoryでライブラリのダウンロードが遅くて困った話

TL;DR

気づき

Google Colaboratoryで日本語の形態素解析とか動かそうと思ってJuman/Juman++、KNPとか入れようとしました。 しかしながら、wgetで京大のページからダウンロードしようとしたらやたらめったら遅い。 Google Colaboratoryの仕様で遅いのかなと調べてみたけど、むしろ早いという触れ込みが多いし、pip3とかはたしかに早い。

頭使って考えた結果、Google Colaboratoryは日本国外のサーバで動いていて距離が影響して遅いのではないかと仮説を立てた。 最も簡単に距離を縮める方法を考えた結果、もうGoogleドライブに入れちゃえばいいじゃんという結論に至った。 何回もダウンロードしなくても、一回アップロードすれば後はマウントすれば終わりだからオーバーヘッドも減るし。 実際、ドライブへのアップロードはColaboratoryでダウンロードより早いし、かなり楽になった。

令和の機械学習Azure Hands Onの参加メモ

f:id:tkm1988:20190621204030j:plain
FIXERでのハンズオン風景

講師

  • 山本 和貴
  • 株式会社FIXER データ・サイエンティスト
  • このハンズオンは採用活動の一貫らしいので、joinしたい人は参加するのもあり

メモ

  • これまでの機械学習
    • 全て手作業(データ収集、クレンジングや加工、特徴量設計、モデル設計や構築、評価、デプロイとかとか)
    • 例えるなら洗濯板での洗濯みたいなもの
  • これからの機械学習
    • 大部分を全自動で行うことができる(上で言うところ特徴量設計からデプロイあたり)
    • 例えるなら全自動洗濯機
  • Auto ML + MLOps
    • de:codeではAzure NotebookからGithubにpushしたらAzure Piplineでデプロイまで持っていく感じ
    • 今回は簡単にするためAutoMLに一部置き換えて実現する

感想

  • AzureのUIはAWS触った事あればさほど苦労しなさそう
    • AWSで言えば何なのか?っていう変換部分は覚えなきゃいけないけど
  • Azure AutoMLはDataRobotに似ている
    • とは言え、Azureを活用してる人たち向けだなと思う
    • Azureにロックインしている会社のサイエンティスト向け
    • Azureには学習データの分析ツール(タグクラウド作ってくれたりみたいなの)はないかな?
    • DataRobotの方がより非エンジニア向けな印象
    • そもそもAzureをメインで使う会社を増やさないと盛り上がらなそう
    • AWSGCPもAutoMLには手を出しているのでAzureをあえて使う動機付けが今のとこないイメージ
  • DevOpsツール初めて触った
    • サイロ化している組織では活かせないと思う
    • 統制を効かせい場合はルールを決めるだけに留める方がいいのかな?もう少しここを掘り下げた話を今度は聞いてみたい
    • 好きに使いたいのに権限分離されて、使いたい部署と管理部署でコミュニケーション取りながらパイプライン作るのは非効率的なはず
    • 日本版SOX法とかPCI DSSみたいな規制を前にして旧態依然な開発・運用体制をとる企業は組織体制を変えるところからスタートしないと形だけ、ツール入れただけのなんちゃってDevOpsになる

最後に

あまり肯定的な感想がないけども、実際、これまでデータを軽視、ないしは十分に活用出来ていなかった企業にとってはAutoMLは重要な選択肢になるとは思う。 ただ、なんの経験も、ましたや素養すらもない人間たちが利用すると手に負えないはず。 モデルを一から作れるようなスペシャリストまでは必要ないものの、モデルを本番運用する上では基礎的な統計知識ぐらいは当たり前に持ってるような人は人材として抱えていかないといけないなと改めて感じた。

Spark Meetup Tokyo #1 (Spark+AI Summit 2019)を聴講した話

f:id:tkm1988:20190612182303j:plain
開始前の風景

Spark + AI Summitって?

米国Databricks社が主催するApache Sparkに関する世界有数のカンファレンス。 アメリカではSan Francisco市のMoscone West Convention Center(東京ドーム0.7個分くらい)を会場としている。 今年は5,000人以上世界から参加していて年々参加者が増えている。ちなみに、昨年は4,000人クラスだった。 APACからの参加者も増えていて120名近く今年は参加していて、内20名は日本からの参加者だそう。

いわゆるビッグデータ技術に関するカンファレンスだったけども、近年話題の機械学習との親和性もあって昨年から名前にAIを関するようになった。 元々、Apache SparkにはMLlibがあるので、急に機械学習が使えるようになったとかそういう話ではない。

Spark Meetup Tokyo

Connpassのイベントページからの抜粋。

Spark+AI Summit 2019で発表があったSparkの最新開発状況,ユーザからのユースケース報告,
関連OSSであるKoalas/MLflow/Delta Lakeなどに関する情報をお伝えします.

会場はコワーキングスペース的な雰囲気を醸し出していた。おしゃれ。 この一角だけそういう雰囲気なので浮いていないかというと嘘になる(最上階だしね)。 東京タワーも見えたらよりおしゃれ度が上がったろうに。田町駅に向かって帰ると綺麗に見えるからまぁいいか。

雑感

  • 元が40分とかのセッションをサマって話してもらっている
  • ここで語られた内容が全てという話ではないので注意
  • 公開期間は定かではないが発表の様子はビデオで公開されているので全て知りたい人はそれも合わせて確認した方がいい
  • 英語苦手な自分としては自分が理解することができた内容を改めて日本語で確認できるいい機会だった
  • 以下のような人にはオススメな会だった
    • Apache Sparkについて興味関心がある
    • Apache Sparkについて最新の情報を手軽にキャッチアップしたい
    • 英語苦手
    • 参加費高い
    • 渡航費用も高い
    • それらを会社は払ってくれないから行けもしない
  • Delta LakeはApache SparkでACID特性を持たせられるので発展しそう
  • Pandasの知識をそのまま活かしつつSpark環境で大容量データを高速に分析できるのはアプローチとして良いと思った
    • Koalas開発側はPandasを常に追いかけねばならず、しんどそうだなとも思った
    • 現在、DataFrameやSeriesは30%ほど取り込めており、週次でリリースしているみたいなので取りあえずみんな試してみれば良いと思う
  • MLflowもそうだけど、Databricksって先に広まったもののより良くするフォロワーなイメージ
    • 後発品の方が劣っているとは限らないので悪いイメージを持つ必要性はないと思う(それもまた戦略だし)
    • とはいえ、OSSへの貢献度は高いと思うのでありがたい
    • MLflowも昨年ベータ版だったの1.0がリリースされ、そしてそれがアメリカの有名企業で使われたりと存在感自体は依然としてある

最後に

APACでは三番目のDatabricksのオフィスが日本に出来たので、日本でのこれからどう広まってくかは注目。 日本はまだまだデータの活用が進んでいないので、商機はあるのかもしれない。 製品を売るのもそうだけどOracle DBのように資格ビジネス的な感じでロックインしたエンジニア(サイエンティスト)を増やすのが良いかもしれない。