TIL blog

ML engineer 2年目 技術ネタ, その他学んだことのアウトプット用

auto-ls をいい感じにする

esa と typora で個人wiki 的な感じのもの作って満足 して public なoutputをサボっていたので 小ネタを書く

auto-ls

github.com

cd したときに デフォルトで 自動的に lsgit status してくれるやつ, history が汚染されにくくなるし便利。

不満点

出力が冗長, scipy に適当にfile を追加してみる

~/gitrepos/github.com/scipy/scipy master*
❯ touch hoge && cd .
appveyor.yml  CONTRIBUTING.rst  hoge             MANIFEST.in  README.rst   setup.py          tools
benchmarks    doc               INSTALL.rst.txt  pavement.py  runtests.py  site.cfg.example  tox.ini
codecov.yml   HACKING.rst.txt   LICENSE.txt      pytest.ini   scipy        THANKS.txt

On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    hoge

nothing added to commit but untracked files present (use "git add" to track)

対策

git status --shortexa を使う

exa について

better ls, rust製

github.com

zshrc に以下を追加

export AUTO_LS_COMMANDS=(exa git-status-short)
auto-ls-exa () {
if type "exa" > /dev/null 2>&1; then;
                exa
        fi
}
auto-ls-git-status-short () {
  if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == true ]]; then
    git status --short
  fi
}

結果

出力が簡潔になっていい感じ, コードべた張りなのでわかりにくいが, exa 使ってるので色分けもいい感じ。

~/gitrepos/github.com/scipy/scipy master*
❯ cd .
appveyor.yml  CONTRIBUTING.rst  hoge             MANIFEST.in  README.rst   setup.py          tools
benchmarks    doc               INSTALL.rst.txt  pavement.py  runtests.py  site.cfg.example  tox.ini
codecov.yml   HACKING.rst.txt   LICENSE.txt      pytest.ini   scipy        THANKS.txt
?? hoge

一言

はてなシンタックスハイライト 結構マイナーなのにも対応しているのに, なんで bash ないんだ...

help.hatenablog.com

Captio + slackでアイデアメモ

シャワー浴びてるときとか散歩してるときとかにいいアイデア思いついても, パッとメモ取れないのが微妙にストレスだったのでいい方法がないか少し調べて試してみた。
結局一旦captio + slackに落ち着いた。
昔は fastever とか使っていたんですが. 色々あってevernote使わなくなってしまったので。
slackで自分にmentionする方法も使っていたんだけど, 遷移するのが面倒。

Captio

fastever のメール版, どっかのpodcastで最初紹介されてて良さそうだと思ったけど, メールあまり見ないしなーと思って放置していたのだが, 最近以下の記事で言及があって存在を思い出した。

自分はメインのコミュニケーションツールはslackを使っているのでそちらと連携できないか, 少し調べてみた。

slackへのメール転送

普通に公式ドキュメント記載の手順で設定した。こちらの手順で転送用のメールアドレスを取得できるので Captioの送信先にそちらを指定する。

設定した感想

良かったところ

  • Captio立ち上げ早いので, パッとかけて良い。これくらいならストレス感じない
  • 情報がslackに集約される

微妙なところ

  • 通知バーでは 件名を表示してくれない f:id:Schumi543:20180609091751p:plain

  • slackbotから送られてくるのでmuteできない。

    • keyword notificationくらいで十分

ついでに

  • githubredmineのissueで自分がassignされているもの+watchされているものをgmail経由でslackに送るようにした。この辺もうちょい活用するならチャンネル分けて転送したい感
  • イデアをすばやくメモする方法がほしいという話, この前ご飯いった起業家学生とも話したのだが, 結局今の所電子媒体に記録するときに最もレイテンシが少ないインターフェイスが発話だよねという話になった。なんか顔の筋肉の動きで発話内容読み取って記録するデバイスを知り合いが研究してるとか言ってて面白そうだった。

neovim0.2.2で `pointer being freed was not allocated`

dein周りの設定をいじっていたら, mallocのerrorが出てきて困ったのでその時の対処のメモ。 根本的な原因はわかっていない 😢 後ほどわかれば追記

バージョン情報

macOS 10.13.3
neovim 0.2.2
vim 8.0

error内容

$ vi a
[dein] Invalid toml format: /path/to/.config/nvim/dein.toml
[dein] Text.TOML: No such file `/path/to/.config/nvim/dein.toml'.nvim(72526,0x7fffb059b340) malloc: *** error for object 0x7fba90702470: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
zsh: abort      /usr/local/bin/nvim a

$ type -a vi
vi is an alias for /usr/local/bin/nvim
vi is /usr/bin/vi

どうやらdein関係のキャッシュが問題?

対処

dein の各種リポジトリが入ってる削除を一旦対比させて, 素のvim経由でdein.toml読んでplugin入れ直したら直った

ググって確認したissueはこの辺とか https://github.com/Shougo/dein.vim/issues/270 https://github.com/NixOS/nixpkgs/issues/18466

こういうことかも, neovim側のバグ?

kiooss commented 10 days ago @ZackC I think the "the latest version of neovim" from Shougo is the latest unstable version of neovim, but not the latest stable version^^

macOS High Sierra updateでハードリンクしてたディレクトリが消える問題まとめ

TL;DR;

  • macOS High Sierra にupdateするとファイルシステムが変わってハードリンクしてたディレクトリが使えなくなりました。
  • とりあえず復旧できましたが, 同じような使い方している人はupdate気をつけたほうが良さそうです。

背景と起こっていた問題

  • alacritty使うのにOS のバージョン上げろと言われたのでそろそろいいかなと思って上げた。
  • 結果 hardlinkしてた一部のローカルリポジトリのファイルが使用不可になりました

原因

Does Apple File System support directory hard links?

Directory hard links are not supported by Apple **** File System. All directory hard links are converted to symbolic links or aliases when you convert from HFS+ to APFS volume formats on macOS.

解決策

備考

一言

  • OSのアップデート内容はきちんと確認しましょう。

GTC Japan 2017 参加メモ

今更感ありますが, 社内ブログに書いたネタを使いまわしました。

イベントの内容はこんな感じで, 2日目13日の方にお邪魔しました。 手元のメモを元に気になったポイントなどをまとめます。

基調講演

ディープラーニングの本番運用への課題を解決する「ABEJA platform」

データ分析コンサルっぽい話でした 以下memo

  • Abejaは国内で唯一nvidiaから出資受けている

  • 現状, アノテーション作業を付加価値高いデータサイエンティストの方がやっている

  • アノテーションデータがどれだけ必要かがわからない

  • 精度が何%あれば成立するのか品質の評価のすり合わせが難しい

  • annotation用のソフトウェアを制作

    • annotation以外でも人力AIでデータ貯めるためにオペレータが使用するソフトを内製している会社は結構あるイメージ。名刺のあの会社とか

AIタクシー, リアルタイム人口統計データを用いた深層学習によるタクシー需要予測

  • 研究概要
  • 今回講演のメディアまとめ

  • 現状の課題

    • 新人ドライバーは需要の高いエリアがわからない
    • ベテランドライバーは土地勘のないエイアから得意エリアに帰ろうとしてしまう
  • 使用データについて

    • 携帯電話の基地情報データ500mグリッドで推定
    • docomo携帯電話所持率に合わせて補正した値を利用
    • データは30分毎にバッチ取得
  • 用いた手法について

  • 高次元の特徴量の抽象化のためにstacked denoising AEを使用, AEで抽象化されたデータをpredictorに入れて30分後の需要予測

  • ParameterOptimization

    • Hyperopt でrandom search
  • relu, batch normarization, adamを使用
  • 計算環境

    • DGX-1 P100 16GB * 8
  • 工夫

    • 他地点のデータを取り入れることで汎化性能を高めた
    • タクシーデータ, 人口データ, 気象データを利用
  • 気になった点

    • 他の手法との検討比較がなかった。そもそもdeep でやる必要あるのか?
    • グラフをパット見た感じdailyのseasonalityの影響が大きい。周期はyearlyで考慮したとのことだがその他は?
    • 研究, 計算コストと実際の売上への寄与

機械学習による視覚情報理解

東大原田先生の公演 研究室の最近のDL関係の成果報告

今回の発表テーマは以下の3つ

  • webDNN
  • Neural renderer
  • between class learning

以下で概要をまとめますが, Deepの話あまり詳しくないのでテキトーな箇所もあると思うので, 詳細気になった方は元の論文読んでください。

webDNN

  • 概要

紹介ページの内容をGoogle翻訳に突っ込んだだけ

ディープニューラルネットワーク(DNN)は、多くのアプリケーションで使用することに大きな注目を集めています。しかし、多くの計算資源が必要であり、GPGPUなどの実行環境に基づくハードウェアアクセラレーションを設定するには膨大な処理が必要です。したがって、エンドユーザにDNNアプリケーションを提供することは非常に困難です。 WebDNNは、Webブラウザをインストール不要のDNN実行フレームワークとして使用することで、この問題を解決します。このフレームワークは、訓練されたDNNモデルをモデルデータを圧縮し、実行を加速するように最適化し、WebAssemblyやWebGPUなどの新しいJavaScript APIを使用してゼロオーバーヘッド実行を実現します。実証的評価では、200倍以上の加速を達成しました。

  • PCなどのカメラで取り込んだ画像をリアルタイムで変換, 分類 ONNXにも対応
  • 実際に以下のページで試せる MIL WebDNN

    • Neural Style Transfer
      上記ページのデモでは葛飾北斎風の絵に変換可能

    • ResNet50
      学習済みResNetによる物体識別

  • OSSとして公開されている :ideograph_advantage: https://github.com/mil-tokyo/webdnn

Neural renderer

  • 概要 2d画像から, 3dモデルへのレンダリングをDNNで実現 既存のBoxel baseよりスムーズに3dモデルを再現

著者による紹介ページ

  • 3dモデルのレンダリングをDNNで行うにあたって微分不可能な領域が存在するため, backpropの計算が困難。提案手法ではblurしてから微分。詳細は元論文fig.2, fig.3, chap.3あたりを参照

  • 3d版deep dreamなどが紹介されていた。

between class learning

paper

(概要) 画像識別のための新しい学習法。 CIFAR10, CIFAR100などでShake-Shake Regularizationを拡張することでSOTA達成

ベースのアイデアはMITとFAIRが出したmixupと同様。(ref. unsky/mixup: mixup: Beyond Empirical Risk Minimization )

(雑な説明) 異なる2つのクラスt1,t2に属する, imageの特徴x1, x2を r~U(0,1) でmixinして, 特徴を (1-r)x1+rx2, クラスを (1-r)t1+rt2 として学習を行う。

(なぜうまく行ったか) CNNは内部表現として画像をwaveformでも扱っているため, 音声識別におけるmixinと同様に良い作用を及ぼしたと考えられる。
(元論文3.2節 ※この辺だいぶ理解が怪しいです)

ポスターセッション

富士通, デンソー, Mathworks, Brainpad, ABEJAあたりを聞きに行きました。

ABEJAのmachine learningのモデルを管理するプラットフォームはなかなか良さそうでした。公演ではDeep押しでしたがその他のモデルも管理できる模様

その他

  • 人多すぎて疲れました。Deeplearningでいい感じに動線管理してほしい。。。
  • ハードよりの方の話が多かったので新鮮でした。
  • NVIDIA Carかっこいい

雑な今年の振り返りと来年の抱負

いい感じのタイトルが思いつかないとかいって, なんだかんだ初めてなかったブログ始めます。 技術ネタ中心に書く予定。文章書くのに慣れていないので, 最初のうちはカジュアルに書いていって, 経験積むうち洗練していければ良いかなと思っています。

とりあえず初回は今年の振り返りと来年の抱負から。

振り返り

  • 仕事はじめました。都内のアドテク会社でML engineerやってます。
  • 家賃手当が出る関係で会社の近くに住めたのはラッキーでした。私服徒歩通勤サイコー。
  • やっぱり東京はソフトウェアエンジニアリングの勉強会多くてよいですね。参加基準もゆるいので知らないことを知るためにあちこち顔出させていただいていました。来年は主催したい。

    • Twitterでしか絡んだことなかった人の正体がわかったり, OSS, 技術ブログ, Podcastなどの著名人と実際にあって直接質問できたのが良かったです。
  • 仕事の反省

    • 前半はドメイン知識がなさすぎて, 後半は調べだすと止まらないくせのせいで, 自分が目標においていたような成果を出せなかったので, 余裕ある今のタイミングで仕事の進め方整理してます。
    • 抽象的な話になってしまうが, 自分が書きながら, 話しながら思考を整理するタイプなので, 接し方によってはコミュニケーションロスが生じてしまうケースがあった。

来年の抱負

  • オープンな場でのアウトプットを増やす

    • もともと良くも悪くも勉強好きなので, 自分である程度理解して満足してしまうフシがあるのでちゃんとコード書くなりブログ書くなり外で話すなりしてアウトプットする。
    • 巧遅拙速大事。人はマサカリを投げつけられて強くなる。
    • とりあえず年始に二件ほど登壇予定。
  • kaggle参加

    • 最近の手法ながめて手元で試したり, kaggler-jaで知見もらっているくらいでコンペにはあまり参加できてなかったので出ます。masterになりたい。
  • なにか1つプロダクト作る

    • アプリケーションとして完結したものを作ったことないのが, 微妙にコンプレックスなので作る。
    • 被りそうなネタしか思いついてないけど。。。