GENZITSU / UsefulMaterials

34 stars 0 forks source link

weekly useful materials - 08/03 - #108

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

このタイミングで知っておきたい 開発生産性の高いエンジニア組織の特徴とは

開発生産性の高い企業の特徴および、生産性の改善に成功したはてな社とグロービス社の事例が紹介されている。

特徴

収益性に直結してくる指標および先行指標をしっかり測り、その数値を元に組織全体で改善活動を行えるような組織。

スクリーンショット 2022-07-23 14 24 56

スクリーンショット 2022-07-23 14 25 15

スクリーンショット 2022-07-23 14 25 25

はてなの事例

スクリーンショット 2022-07-23 14 27 05

スクリーンショット 2022-07-23 14 27 28

スクリーンショット 2022-07-23 14 27 37

グロービスの事例

スクリーンショット 2022-07-23 14 28 07

スクリーンショット 2022-07-23 14 28 23

スクリーンショット 2022-07-23 14 29 34

コメント

Findy temasを使わないと簡単には計測できないような指標もあるが、まずは計測することが大事なのは同意。
その指標をチーム間で共有し議論する文化を作ったことで成功したという事例はzozoのテックブログでも見た気がする。

出典

このタイミングで知っておきたい 開発生産性の高いエンジニア組織の特徴とは

GENZITSU commented 1 year ago

文化を覗く新しい望遠鏡 〜NgramViewer, Word2vec, DALL·E〜

文化や社会の変化を観察・分析するためのツールとして近年の自然言語処理の技術やtext-to-imageがどのように活用できるかが紹介されていて、面白い。

ちなみにビッグデータを用いて社会や文化を分析しようという流派のことを「カルチャロミクス」と呼ぶらしい。

カルチャロミクス:文化をビッグデータで計測する」は、このNgram Viewerを作った研究者の書籍です。彼らは、ビッグデータを活用して文化を解析する方法に「カルチャロミクス」と名付けて、書籍内で実例をいくつも紹介しています。

NgramViewer

書籍に登場した単語の回数を調べていくことで、新しい製品や概念がどのように社会に受容されていき、衰退していったかなどを調べることができる。

Ngram Viewerは、Googleが開発したシステムです。Googleは過去数世紀の書籍をデジタル化しており、Ngram Viewerでは、単語が書籍の中にどれだけ出現していたのかを、簡単に調べられます。

スクリーンショット 2022-07-23 16 44 53

Word2vec

単語の意味をベクトル化することで、単純集計を超えた分析ができるようになった。
例えば、過去と現在の単語の関係マップを見比べて、昔の概念Aに相当する今の概念を探しにいくとか。 (大統領とかがわかりやすい)。また過去と現在だけでなく、地域別のマップを見比べることも可能。

スクリーンショット 2022-07-23 16 50 19

また、単語の意味変化を時系列的に可視化する手法も存在する。

スクリーンショット 2022-07-23 16 51 09

さらに、単語の意味関係を可視化することで、社会的なバイアスを明らかにする手法もある。
例えば職業と性別の意味的な近さを可視化することで、機長は男、アテンダントは女性みたいなバイアスを改めて可視化することが可能。

スクリーンショット 2022-07-23 16 55 33

DALL-E

textの意味を正確に理解してそれを描画することができるtext-to-imageの技術を用いて、出てきた画像を元に分析を行う手法。
promptをどう与えるかによって結果はかなり変わりそうだが、以下の例が面白い。

各年代ごとの分析

スクリーンショット 2022-07-23 16 57 38

スクリーンショット 2022-07-23 16 57 45

スクリーンショット 2022-07-23 16 57 51

地域ごとの分析

スクリーンショット 2022-07-23 16 58 43

スクリーンショット 2022-07-23 16 58 50

注意点

欧米系のデータがたくさん蓄積されている傾向があるので、欧米以外の国に対する解析結果が本当に正しいか?どのようなデータが使われているか?の確認はちゃんとした方が良さそう。
でかいモデルになればなるほど、どんなデータを使ったかは開示されない傾向があるので解析結果の取り扱いに困りそう。

データについては、西洋のデータがより蓄積されそれが解析される傾向にあります。DALL·Eにおいて、日本に関する画像生成がどこか古めかしい画像が多く、これは学習時に使われた画像の偏りに起因している可能性もあります。DALL·Eを文化や社会研究に使う場合は、学習時のデータに偏りがないかを確認することが必要になってくると思います。 従来の人文系の研究でも、調査対象が偏っている問題は、WEIRD samples (Western, Educated, Industrialized, Rich and Democratic)と呼ばれ課題となっています。今後、データを活用した研究においても、WEIRDでないデータをどう入れ込むかが重要だと思います。

コメント

歴史の偉人に現代に物申させる的な本があったりするが、text-to-imageがさらに発展して、text-to-video, text-to-audioとかまで進むと、AIにそれをやらせる人が出てきたりしそう。大衆の多くは背後にあるデータのバイアスなどには興味がないので、クソデカ基盤モデルを唯一神とした教団が登場しそう。

prompt tunerという職種の登場がささやかれているが、かつての霊媒師、信託者のような感じの立ち回りをすることになっていくのだろうか笑

出典

文化を覗く新しい望遠鏡 〜NgramViewer, Word2vec, DALL·E〜

GENZITSU commented 1 year ago

AWS Lambdaで300万円以上課金されてしまった怖い話

AWS Lambdaで無限ループを発生させてしまい、コール回数が爆裂に増えたことで高額請求されてしまったという話。

作成していたjob

(A)Lambda上でOktaのログをJSON形式で日次ダウンロードし、S3に配置 (B)S3上にファイルが配置されたのをCloudTrailで検知し、S3上のJSONファイルをCSVファイルに変換

スクリーンショット 2022-07-25 23 03 06

スクリーンショット 2022-07-25 23 03 28

何が起きたか

スクリーンショット 2022-07-25 23 05 03

原因

おそらくevntが無限回起動し、同一のjsonに対しての処理が無限回走ってしまった模様。

スクリーンショット 2022-07-25 23 06 14

対策

eventbrigeのルール設定をちゃんと見直しておくべきというのはおいといて、

①: ちゃんと監視をする。 デプロイした当日~1日後にちゃんと動作を確認しておけば10万くらいで済んだはず

②: アラームをちゃんと設定しておく 指定金額以上になったら、自動的に通知という形にしておけば傷口は浅かったはず。。。

コメント

トリガーを起点としたjobを生成する際に自分でも注意していきたい。
コードレビューに加えて、クラウドの諸々の設定についてもなんらかのレビュー体制を入れておかないと後々事故りそう

出典

AWS Lambdaで300万円以上課金されてしまった怖い話

GENZITSU commented 1 year ago

人工知能(DALL-E2)が描いた俳句の情景

表題の通り

スクリーンショット 2022-07-25 23 20 47

スクリーンショット 2022-07-25 23 20 39

スクリーンショット 2022-07-25 23 20 33

コメント

俳句を入れるという発想はなかった。俳句を一回日本語に直して入れているのかな...?
俳句が入れられるなら、有名な詩とかを入れてみても面白そう。

出典

人工知能(DALL-E2)が描いた俳句の情景

GENZITSU commented 1 year ago

Decoder Denoising Pretraining for Semantic Segmentation

segmentationタスクにおいて、encoderではなくdecoderの方にpretraining taskを適用することで、few shot設定における性能向上を果たしたという報告 from google research

以下の画像のように、encoderはImagenet pretrainedのモデルを利用して、まずはencoderをfreezeした状態でdenoising taskを全学習データで実施してdecoderの事前学習を行い、その後全てのパーツをsegmentation taskによってfine tuningする。

スクリーンショット 2022-07-26 20 58 07

与えるノイズのイメージ

スクリーンショット 2022-07-26 21 39 32

実験に使用したアーキテクチャー

Unetのbottle neck部分がtransformerになったHybrid-ViTなるものを利用

スクリーンショット 2022-07-26 21 34 30

諸々のアブレーション

① 画像の復元をするか、ノイズを当てるか → ノイズを当てに行った方が良い

スクリーンショット 2022-07-26 21 44 20

② pretrainingをしすぎることで悪影響が出ないか? → 基本的にやればやるほど良い

スクリーンショット 2022-07-26 21 44 25

③ encoder / decoder 両方pretraiingするべきか? → decoderだけで良さそう

スクリーンショット 2022-07-26 21 45 51

④ どのデータでpretrainindするべきか? → Imagenet-21kが若干良い

スクリーンショット 2022-07-26 21 48 39

⑤ その他の手法とくらべてどうか? → DDePが良い

スクリーンショット 2022-07-26 21 50 21

⑥ 別のモデルでもうまくいくか? → うまくいく

スクリーンショット 2022-07-26 21 50 07

コメント

decoder側をpretrainするという発想なかったが、こんなシンプルな手法でうまくいくのは驚きである。
発想としてはFine-Tuning can Distort Pretrained Features and Underperform Out-of-Distributionという論文に近いのかもしれない

スクリーンショット 2022-07-26 21 56 11

出典

Decoder Denoising Pretraining for Semantic Segmentation

GENZITSU commented 1 year ago

neuralcorefによる共参照解析

文章中での表現は別だが、実態は同じものを指しているような関係を解析する共参照解析を行うライブラリneuralcorefの紹介。

例えば以下のような感じ

“Chief Executive Tim Cook has jetted into China for talks with government officials as he seeks to clear up a pile of problems in the firm's biggest growth market. Cook is on his first trip to the country since taking over from late co-founder Steve Jobs"

{Chief Executive Tim Cook: [Chief Executive Tim Cook, he, Cook, his]}

neuralcoredの実行結果

スクリーンショット 2022-07-26 23 31 03

共参照の実態および、参照も取得できる

スクリーンショット 2022-07-26 23 31 59

デフォルトの対応言語は英語だが、アノテーションデータを用意することで別言語にも使用可能とのこと。

コメント

共参照解析という単語を初めてしった笑 なんかで使うかもしれないのでメモ。

出典

neuralcorefによる共参照解析

GENZITSU commented 1 year ago

XGBoost または LightGBM モデルの予測速度を最大 36 倍まで向上させる方法

インテル® Xeon® プロセッサー上でのXGBoost, LightGBMの推論速度を高速化させる方法の紹介。

daal4pyを用いてモデルを変換すれば良いとのこと

スクリーンショット 2022-07-27 19 42 41

コメント

利用可能な場面が限定的だけどメモ

出典

XGBoost または LightGBM モデルの予測速度を最大 36 倍まで向上させる方法

GENZITSU commented 1 year ago

複雑なコマンドパイプラインを簡単に組み立てる方法

linuxコマンドの実行結果をリアルタイムに表示することで、対話的にパイプラインな構築を可能にするPiprというツールの紹介。

この動画を見るのが早い

現状ではubuntuへのサポートがないため、使うには一手間必要。

Piprは現時点でUbuntu向けのパッケージが用意されていません。そのためcargoを利用してインストールするか、自前でソースからビルドする必要があります。幸いDockerコンテナ内でビルドし、成果物だけを取り出すスクリプトが用意されているため、この方法でビルドするのが簡単でしょう。

コメント

ログの解析をよくする場合に使えそう。

出典

複雑なコマンドパイプラインを簡単に組み立てる方法

GENZITSU commented 1 year ago

OpenCVのスーパーピクセル

似たような画素値をもつピクセル同士をまとめ上げるスーパーピクセルをOpenCVで求める方法の紹介

スクリーンショット 2022-07-27 20 05 23

スクリーンショット 2022-07-27 20 05 30

やっていることはほぼほぼKmeansで、以下のように距離を定義している

スクリーンショット 2022-07-27 20 08 46

コメント

一昔前にこんなのがあったのかという感じ、結構綺麗に分かれているので、segmentation taskの前段に使ってみるとかできるかも...? (歴史的にもう試されていそうだけど)
そのためには非定型なセグメントから特徴抽出する必要があるが...

出典

GENZITSU commented 1 year ago

デジタルツインと電話応対における音声合成と音声認識

CyberAgent内で取り組まれている音声合成・音声認識プロジェクトの紹介スライドで、各タスクの品質をどのように改善していくべきかの方向性も示されている。

以下スライドの抜粋

スクリーンショット 2022-08-01 23 18 51

スクリーンショット 2022-08-01 23 19 20

スクリーンショット 2022-08-01 23 21 01

スクリーンショット 2022-08-01 23 22 09

スクリーンショット 2022-08-01 23 22 20

スクリーンショット 2022-08-01 23 22 31

スクリーンショット 2022-08-01 23 23 00

コメント

fastspeech2の論文を読んだことがないと理解するのさえ難しいが、ピッチの予測結果をビームサーチ的にアライメント補正していくという手法はかなり筋が良さそう。
音素情報とアクセント情報の分離の部分は、単に2branchにしているのか音響学的にこれらを分離して入力することが可能なのかが不明。

また、音声認識についても用途によってチューニングの方向が異なるという点は当たり前ではあるがなるほどなと思った。

出典

デジタルツインと電話応対における音声合成と音声認識

GENZITSU commented 1 year ago

画像生成AI DALL·E 2、人種・性別の偏りは密かに「枠」追加で補正。研究者のハックで発覚

画像生成AI DALL-E 2 が生成する画像に多様性を与えるため、ユーザーの入力テキストに密かにpromptを追加していたことが発覚したとのこと。

ことの経緯

DALL-E 2が生成する画像のバイアスは以下のように、現実世界のバイアスを引き継いでてしまっていた。

以前のDALLE 2は「英雄的な消防士」と入力すると結果は全員白人男性、「女性の肖像」に対しては全員白人女性、「ソフトウェアエンジニア」は全員白人男性、単に「CEO」では大半がビジネススーツの白人男性と少数の黒人男性を生成する状態でした。

スクリーンショット 2022-08-01 23 56 06

この問題に対して、open aiは2022/7/18に多様性をもたらすようなアップデートをしたと発表

Based on our internal evaluation, users were 12× more likely to say that DALL·E images included people of diverse backgrounds after the technique was applied. We plan to improve this technique over time as we gather more data and feedback.

ただしこのアップデートはどういったテクニックを用いて、バイアスを低減しているのかは謎に包まれていた。

方法

以下のような非常にシンプルな方法

FYDUQeiUYAA_B48

FYDUSwnVUAAqaC3

FYDUWmSUcAAfYzn

以前から、入力promptに何かしらの細工がされているのでは?という噂は出ていたが、それが証明される形となった。

コメント

open aiのアップデートはモデルを学習しなおしたにしてはあまりにも早かったので、どんなすごいハックを使っているのだろうかと思っていたが、まさかのprompt expansionだった。

寂しさ半分、まぁそういうことしかできんよなという気持ちも半分で、ある意味でprompt engineeringの可能性を示す一例なのかなと感じた。

出典

GENZITSU commented 1 year ago

Hugging Face x ONNXを調べてみた 〜学習編〜

ONNX Runtimeを利用したHugging Face モデルたちの学習方法および環境構築方法が紹介されている記事。

A100を用いた公式exampleでは以下のように若干高速化しているのだが、筆者の環境ではむしろ若干遅くなったとのこと

スクリーンショット 2022-08-02 22 19 24

スクリーンショット 2022-08-02 22 20 53

環境構築にはかなり罠があるようなので、リンク先を確認されたい。

コメント

ONNN Runtimeは学習に使うもんじゃないだろ... と思ってしまったが、最適化が進んでちゃんと早くなると良いな。

出典