今回は mypy plugin を利用して、型安全に対応していないライブラリを型安全にする方法を紹介します! 具体的にはエムスリーが開発する機械学習パイプラインツールである gokart を対象とし、mypy plugin を用いてどのように型の課題を解消したかについて解説します。 対象読者としては、既に gokart を使ってくださっている方はもちろんですが、dataclass や Pydantic がどのように型を担保しているかについて興味がある方も想定しています。
続きを読むSRE NEXT2024 登壇&体験記 その2
AI・機械学習チームの北川(@kitagry)です。 この記事はAI・機械学習チームブログリレーの記事です。
8/3,4の2日間、SRE NEXT 2024で登壇させていただきました。 こちらで自分の登壇の話しと印象に残ったセッションなどの参加レポートとして紹介します。
また、弊社の後藤もレポートを書いているので良ければこちらもご参照ください。
第27回 画像の認識・理解シンポジウム(MIRU2024)にシルバースポンサーとして参加します!
こんにちは! AI・機械学習チームの氏家(@mowmow1259)です。 エムスリー福岡オフィスの一人目のエンジニアとして福岡で働いています。 本稿はエムスリーAI・機械学習チームで2週間連続で行われるブログリレー3日目の記事となります! 2日目の記事も是非ご覧ください。
さて、この度、エムスリー株式会社は8/6〜8/9に熊本で開催される第27回 画像の認識・理解シンポジウム(以下、MIRU)にシルバースポンサーとして参加させていただきます! 皆様の研究発表から刺激を受けるとともに、弊社の臨床画像分野での研究の取り組みをご紹介することで医療分野での実応用の知見などを共有できたらと考えています。 8/7〜8/9にかけて3F大会議室A S6でポスターを展示しておりますので、研究に興味のある方はもちろんのこと、エンジニアリングや弊社エンジニアの働き方に興味がある方も是非ブースへお立ち寄りください!
また、ブログリレー1日目の記事を見てくださった方はお気づきかと思いますが、こちらでご紹介したQuineクリアファイルをノベルティとしてプレゼント予定です! 先着順ですので、お求めの方はお早めにブースにお越しください!
この記事では、MIRU2024の企業展示に先立って、ひと足先にポスターで展示予定の弊社の研究内容をご紹介できればと思います。
- MIRU2024とは
- エムスリーでの臨床画像分野の研究取り組み
- 臨床画像分野での応用ってどんなもの?
- エムスリーでの研究事例
- 研究1:胸部X線からの薬剤性間質性肺炎の検出システムの評価
- 研究2:胸部X線画像からの肺動脈性肺高血圧症の検出
- 研究3:治療の副反応として起こる皮膚疾患のリスク予測
- まとめ
- We are hiring !!
ニューラルネットのレコメンドをメモ化して高速にする
こんにちは、AI・機械学習チーム(AIチーム)の農見(@rookzeno)です。最近作ったニューラルネットのレコメンドが遅くて困ってました。その時ふと推論してるデータを見ると、これ同じユーザーとアイテムが多発してるなと気づいたので、メモ化をして高速化しました。メモ化して高速化は基礎の基礎ですが、ニューラルネットでやってるのはあまり見ないかなと思ったので、今回はそのやり方について記載します。
この記事はエムスリーAI・機械学習チームで2週間連続で行われるブログリレー2日目の記事です。昨日の記事もよろしくお願いします。
- 使っているモデルについて
- コード
- メモ化したコード
- 感想
- We're hiring!
肺動脈性肺高血圧症(PAH)を検出するAIを開発し、論文化しました
こんにちは、AI・機械学習チーム(AIチーム)の農見(@rookzeno)です。最近、私が開発したAIの論文が公開されたので、今回はそれを紹介をします。
発表された論文はこちらです
この論文では、
- 胸部X線 (レントゲン) から肺動脈性肺高血圧症(PAH)を検出するAIを開発しました。
- AIと医師を比較した結果、AIの方が医師よりもPAHの検出力が優れていました。
- このAIを使うことでのPAHを早期に発見できることが期待されます。
この研究は千葉大学の今井 俊先生、坂尾 誠一郎先生と共同で行い、今井先生に執筆していただきました。ありがとうございます。
また関連記事として、前回AIチームが発表した同じくレントゲンから病気を予測する論文も紹介しておきます。
- 肺動脈性肺高血圧症(PAH)のAIを作成した理由
- データセット、実験設定
- 結果
- 感想
- We're hiring!
エムスリーが難読プログラミングオタクに送るノベルティ、Python Quineクリアファイルの作り方
早速ですが、こちらに書いてあるソースコード、実際に動くコードとして作成しました。実行結果はどのようになるでしょう?
答えはこれから各種イベントで配られるノベルティを受け取って打ち込んでみてください!!!
まずはあすから行われるコンピュータビジョンの学会MIRU2024のスポンサーブースで配布します!!!
と、いうのは冗談で、さすがに受け取れたとして打ち込みが大変ですし、以下にソースコードを貼り付けます。 本稿では以下のQuineの作り方について解説していきます。ただし、難読プログラミングが好きな人はまずは解説を読まずに自力で読んでみてください!
exec('''m=lambda_x:exec("".join(x.split()).replace("~",chr(32)),globals())'''.replace("_",chr(32))); m("""import~base64~as~b6;import~zlib;tr=lambda~x,y,z:~(y~if~x~else~z);dba=lambda~x:zlib.decompress(b 6.b64decode(x),-15).decode();a=1;lme=lambda~x:list(map(lambda~x:tr(x=="1",1,0),x));s="ZXhlYygnJydtPW xhbWJkYV94OmV4ZWMoIiIuam9pbih4LnNwbGl0KCkpLnJlcGxhY2UoIn4iLGNocigzMikpLGdsb2JhbHMoKSknJycucmVwbGFjZS giXyIsY2hyKDMyKSkpO20oIiIiaW1wb3J0fmJhc2U2NH5hc35iNjtpbXBvcnR+emxpYjt0cj1sYW1iZG F+eCx5LHo6fih5fm lmfnh+ZWxz ZX56KTtkYmE9bGFtYmRhfn g6emxpYi5kZWNvbXB yZXNzKGI2LmI2 NGRlY29kZSh4 K SwtMTUpLmRlY29kZSgpO2 E9MTtsbWU9bGFtYmR hfng6bGlzdC htYXAobGFtYmRhf ng6dHIoeD09IjEiLDEs MCkseCkpO3M9Int9Ijt kaT16bGliL mRlY29tcHJlc3Mo YjYuYjY0ZGVjb2Rl KCI3WlpCRG9Vd0NFVDN QUTI5LytX K2lab0NuUU crSmhxTnJDeU1QQ WVpc2ZVTG9uMlFX eUd5UkFBUkhid0RsOUNpY1NJOWhwUV JUdURIRlZG S05VU2hrTGxWT0V 1ZFBRSEpOM1lF SXJYQ1NZaVVDam5EUTlZeWFMYWVDaEN rUUU1QXMrM FFRNmhaNEVUcmpj RVlJajVTaUoy WXZlQVVUOHNndXQrNG9iQVRKS09Rb 1p6bVZxWmdD T29IY3pVbnU0eE Q wTXYvSnlSM 0F sdFNpRWw1MFF3SnhCUUNuMlFrMn Fqb1ZSdjVmckR mTDJRUVRGaERpSV Rz YU83REsvM nBQ eEl2aC93QSIpLC0xNSkuZG Vjb2RlKCk7cH JpbnQoIiIuam9p bihb dHIoYz0 9Ij EiLGI2LmI2NGRlY29kZS hzLmVuY29k ZSgidXRmLTgiKS kuZGV jb2R lKCJ 1dGYtOCIpLmZvcm1hdCh zKVtzd W0obG1lK GRpKVs6al0pXSx 0cihjP T0 iMCIs Y2hyKDMyKSxjKSlmb3IoaixjKWluKGV udW1lcmF 0ZShkaSkpXSkpI iIiKSMj I yMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM jIyMjIyM jIyMjIyMjIyMj IyMjIyN 3ZV9hcm VfaGlyaW5nPXJlcXVlc3RzLmdldCgi aHR0cHM 6Ly9qb2JzLm0z LmNvbS9l bmdpbmVl ci8iKSMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIy MjIyMjIyMjIyM jIyMjIyMj IyMjIyMjIy Mj";di=zlib.decom press(b6.b6 4decode(" 7ZZBDoUwCET3P Q29/+W+iZoC nQG+JhqNrCy MPAeisfULon2QWy GyRAARHbwD l9CicSI9hp QRTuDHFV F K NUShkLl VOEudPQ H J N3YEIrXCSY iUCjnDQ9YyaL aeChCkQ E5As+0QQ 6hZ4ETrj cEYIj5SiJ2Yv eAUT8sgut+4obAT JKOQoZzmVqZgCOoHczUnu4xD0Mv/JyR3AltSiEl50QwJxBQCn2Qk2qjoVRv5frDfL2QQTFhDiITsaO7DK/2pPxIvh/wA"),-15). decode();print("".join([tr(c=="1",b6.b64decode(s.encode("utf-8")).decode("utf-8").format(s)[sum(lme( di)[:j])],tr(c=="0",chr(32),c))for(j,c)in(enumerate(di))]))""")##################################### ###############we_are_hiring=requests.get("https://jobs.m3.com/engineer/")##########################
ということで、改めまして、AI・機械学習チームリーダーの大垣@Hi_kingです。 本稿はエムスリーAI・機械学習チームで2週間連続で行われるブログリレー1日目の記事となります!
- エムスリー難読プログラミング部
- 難読プログラミングジャンル、整形Quineをやろう!
- 自分で整形したPython Quineを作ってみたい方へ
- まずはとりあえず整形ではないQuineを作る(赤パート)
- 次に、AAを圧縮する(青パート)
- 展開されたAAの形に、展開したプログラムをprintする (橙パート)
- Pythonで改行や空白を自由に整形する (紫パート)
- まとめ
- We are hiring !!
- エンジニア採用ページはこちら
- カジュアル面談もお気軽にどうぞ
- インターンも常時募集しています
エムスリー難読プログラミング部
エムスリーエンジニア公式X をフォローいただいている方は、朝のポストで流れてくるからご存知かと思いますが、エムスリーでは難読プログラミング部が盛んに活動しています。
VPoE河合のモーニングルーティン☀️
— エムスリー エンジニア公式 (@m3_engineering) 2024年4月12日
金曜は難読クイズです!#m3_morning
今日はちょっと難しめ!わかるかな?
list(map(list,list(map(map,map(lambda map:list,map:='map'),map)))) pic.twitter.com/T2Hp2QEsmK
せっかくなのでこの盛り上がりを会社の外でも知ってもらおうということで、#crazy_programmingチャンネルで以下のように呼びかけられました
その中から、今回は、まず機械学習エンジニア向けということで、Python難読おしゃれノベルティを作ってみた次第です。



難読プログラミングジャンル、整形Quineをやろう!
さて、難読プログラミング界隈が好きな人は、最初に見た目で予測がついたかと思いますが、こちら、Quine となっています。
クワイン(英: Quine)は、コンピュータープログラムの一種で、自身のソースコードと完全に同じ文字列を出力するプログラムである。
つまり、それ自体が実行可能で、かつ出力した文字列が自分自身のソースコードとなります。別の言い方をすると、exec(exec(exec(quine)))...と何度でも実行可能なコードとも言えますね。そして、Quineのなかでも、Quineの機能を保ったまま色んな機能をつけるという遊び方があり、今回作ったQuineは、見た目に意味を持たせたQuineです。
さて、このような整形Quineを作るうえで難しいポイントは以下の3つになります。解説の見通しを良くするためにパートごとに色を付けたコードもおいておきます。
- ソースコード自分自身を出力するために、自分の情報を圧縮して自分に埋め込むこと (赤パート)
- 狙った形に整形すること (青パート、橙パート)
- 改行や空白が重要なPythonで上記を実現すること (紫パート、緑パート)
SRE NEXT 2024 登壇&参加レポート その1
こんにちは、SREチームの後藤です。
8月3日と4日の2日間、Abema Towersで開催されたSRE NEXT 2024にて登壇させて頂きました。
こちらに、自身の登壇についての話と印象に残ったセッションなど参加レポートとしてご紹介させて頂きます。