Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「巨人の肩の上」で自作ライブラリを作る技術 / pyconjp2024
Search
Shotaro Ishihara
September 22, 2024
Technology
3
920
「巨人の肩の上」で自作ライブラリを作る技術 / pyconjp2024
「巨人の肩の上」で自作ライブラリを作る技術 (PyConJP 2024)
https://2024.pycon.jp/ja/talk/CLJQ37
Shotaro Ishihara
September 22, 2024
Tweet
Share
More Decks by Shotaro Ishihara
See All by Shotaro Ishihara
記者・編集者との協働:情報技術が変えるニュースメディア / Kaishi PU 2024
upura
0
58
ニュースメディアにおける生成 AI の活用と開発 / UTokyo Lecture Business Introduction
upura
0
170
マルチモーダル AI 実装の課題と解決策 / Developer X Summit
upura
0
230
ニュースメディアにおける事前学習済みモデルの可能性と課題 / IBIS2024
upura
3
730
Quantifying Memorization and Detecting Training Data of Pre-trained Language Models using Japanese Newspaper
upura
0
55
第 2 部 11 章「大規模言語モデルの研究開発から実運用に向けて」に向けて / MLOps Book Chapter 11
upura
0
450
第19回YANSシンポジウムスポンサー資料 / yans2024-nikkei
upura
0
53
Quantifying Memorization of Domain-Specific Pre-trained Language Models using Japanese Newspaper and Paywalls
upura
0
69
「極意本」サンプルコードをクラウド上で動かそう
upura
1
2.6k
Other Decks in Technology
See All in Technology
20240513 - 框裡框外_文學院學生如何在AI世代安身立命 @ 淡江大學
dpys
0
590
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
1.5k
ガバナンスを支える新サービス / New Services to Support Governance
sejima1105
1
920
[Oracle TechNight#85] Oracle Autonomous Databaseを使ったAI活用入門
oracle4engineer
PRO
1
200
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
360
ソフトウェア開発における「パーフェクトな意思決定」/Perfect Decision-Making in Software Development
yayoi_dd
2
2.6k
12 Days of OpenAIから読み解く、生成AI 2025年のトレンド
shunsukeono_am
0
970
20241218_今年はSLI/SLOの導入を頑張ってました!
zepprix
0
250
AWS re:Invent 2024 Recap in ZOZO - Serverless で好きなものをしゃべってみた
chongmyungpark
0
920
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
3
470
大規模言語モデルとそのソフトウェア開発に向けた応用 (2024年版)
kazato
2
420
OPENLOGI Company Profile for engineer
hr01
1
17k
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
330
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Done Done
chrislema
182
16k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Building Adaptive Systems
keathley
38
2.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Scaling GitHub
holman
459
140k
A Tale of Four Properties
chriscoyier
157
23k
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Code Reviewing Like a Champion
maltzj
521
39k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Practical Orchestrator
shlominoach
186
10k
Transcript
「巨人の肩の上」 で自作ライブラリ を作る技術 石原祥太郎 (日本経済新聞社) PyCon JP 2024、2024 年 9
月 28 日
特定の目的に向けて既存 技術を調査し、自作の Python ライブラリを実 装・評価する一連の流れ を紹介 2 「巨人の肩の上」で自作ライブラリ https://speakerdeck.com /upura/pyconjp2024
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 3 開発手順
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 4 開発手順
大学新聞で編集長などを経て、 日本経済新聞社に入社。現在は 研究開発部門で、独自の大規模 言語モデルの構築に従事。 5 現在のお仕事
> 実践:日本語文章生成 Transformersライブラリで学 ぶ実装の守破離 https://2022.pycon.jp/timetable/?id=EEA8FG 6 PyCon JP 2022
7 国際会議 INLG 2024 (9/23-27) で発表 • 日経電子版で学習した大規模 言語モデル (GPT-2)
の暗記を 分析した研究 [論文] • 日本科学未来館で開催
8 大規模言語モデルの構築 事前学習用のテキスト データ (新聞記事) 事前学習・ 事後学習
9 大規模言語モデルの特徴 事前学習用のテキスト データ (新聞記事) 2日の東京市場で日経平均株価の 下落幅が2200円を超え、前日の 米国株に続きアジアや欧州にも 調整が広がった。 日経平均2216円安 下げ幅歴代
2位 米景気下振れ警戒 緩和頼 み脱却へ途上, 日経電子版, 2024 年8月2日. https://www.nikkei.com/article /DGKKZO82545690T00C24A8 MM8000/
10 大規模言語モデルの特徴 事前学習用のテキスト データ (新聞記事) 2日の東京市場で日経平均株価の 下落幅が2200円を超え、前日の 米国株に続きアジアや欧州にも 調整が広がった。 いつ?
11 何が問題? 日経平均株価の下げ幅が歴代2位 だったのはいつ? 2日です ?????????
12 実現したいこと 事前学習用のテキスト データ (新聞記事) 2024年8月2日の東京市場で日経 平均株価の下落幅が2200円を超 え、前日の米国株に続きアジア や欧州にも調整が広がった。 公開日を
用いて復元
新聞記事から時間表現を抽出し 日付を特定し省略を補完 • 入力:テキスト、公開日時 • 出力:補完されたテキスト 13 題材となる自作ライブラリ
大規模言語モデルの事前学習用 のテキストは大量のため、一定 の性能で高速処理できることが 望ましい 14 自作ライブラリの要件
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 15 開発手順
16 要件を踏まえ既存の取り組みを調査 • 社内で共有するなど、有識者に質問 • 一つの文献を起点に、芋づる式に探索 • X などで、定期的に情報収集 •
「車輪の再開発」を避ける 既存ライブラリ・文献の調査
時間情報表現を抽出・規格化 ❯ print(TimexParser().parse("彼は2008 年4月から週に3回のジョギングを、朝8時 から1時間行ってきた")) 17 既存ライブラリ①:ja-timex
時間情報表現を抽出・規格化 ❯ [<TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">] 18 既存ライブラリ①:ja-timex
汎用言語モデルに基づく統合的解析器 ❯ kwja --text "日本サッカー協会は27日、 来年2、3月にホームで開催する男女の日 本代表と北朝鮮代表との試合会場が東京・ 国立競技場に決まったと発表した。" 19 既存ライブラリ②:KWJA
汎用言語モデルに基づく統合的解析器 ❯ + 21D <NE:DATE:27日><体言><修飾><時間> 27 にじゅうしち 27 名詞 6
数詞 7 * 0 * 0 日 にち 日 接尾辞 14 名詞性名詞助数辞 3 * 0 * 0 "代表表記:日/にち 準内容語 カテゴリ:時間" <基本句-主辞> 20 既存ライブラリ②:KWJA
ja-timex の README やドキュメントを起 点に、芋づる式に • 引用している/されている文献を調査 • Connected Papers
などでも関連研究を 調査 21 既存文献の調査
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 22 開発手順
ja-timex の「実装方針」を参考に、時間 情報表現の抽出と、省略の補完の処理を 分けて考えるべきと判断 • 抽出:ja-timex にお任せ • 補完:独自実装のため性能評価が必要 23
方針の策定
24 KWJA (などの大規模言語モデル) は性能 面で優れているが、実行時間や費用がか かるため、今回は不採用に • ChatGPT など商用 API
も同様 • ja-timex はルールベースで軽量 不採択の理由
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 25 開発手順
26 1. ライブラリとして実装開始 2. いくつかの記事を手動で変換 3. 規則性を見い出しテストケースを作成 4. テストが通るように実装を追加し、必 要に応じて全体をリファクタリング
「テストファースト」で実装・評価・改善
27 ライブラリとして実装開始 • ディレクトリのルートに setup.py • pip install -e .
で編集モードでインス トール https://packaging.python.org/en/latest/gui des/distributing-packages-using-setuptools /
• プロジェクト名を付けると気分が乗る • 最初は入出力だけを定義することに ❯ from jarote import by_rote ❯
… ❯ by_rote(text, reference_datetime) 28 jaROTE (Reproducing Omitted Time Expressions for Japanese)
29 1. 入力のテキストに対して ja-timex を実 行し、時間情報表現を抽出 2. それぞれに対し、入力の公開日時を参 照して、省略があれば書き換えを実施 3.
書き換えを反映したテキストを返す jaROTE の内部処理
30 • 「日本経済新聞記事オープンコーパス」 の 96 記事を対象に Spreadsheet に入 出力の組を列挙 •
泥臭く取り組みながら、要件を精緻化し ていく 最終的に実現したい処理を手動で実行
31 • たとえば、年に関する文字列を具体的 な数値に変換するケースでまとめ上げ • テスト用ライブラリ pytest で、出力 と期待する結果の一致を確認 規則性を見い出し、テストケースを作成
• 当然、最初は不一致でテストが失敗 • テストが通るように実装を進めていく • 必要に応じて全体をリファクタリング 32 テストが通るように実装を追加
33 • 実装と性能評価が同時並行で完了 • テストケースを見ると処理が分かりや すい • 一方、初期の開発コストは大きくなる 「テストファースト」の特徴
• 特定の目的に向けて既存技術を調査し 自作の Python ライブラリを実装・評価 する一連の流れを紹介 • 手順は①要件の確認②既存ライブラリ ・文献の調査③方針の策定④実装・性 能評価・改善ーーから成る
34 本発表のまとめ
35 • 開発論の具体的な議論 (「テスト ファースト」「テスト駆動開発」など) • jaROTE で時刻表現の省略を補完した テキストは、大規模言語モデルにとっ て価値がある?
本発表で話さなかったこと
• 「巨人」の知見 (ja-timex や KWJA、 過去の発表文献など) に改めてお礼申 し上げます • jaROTE
もその一部になれるよう、鋭 意開発を進めていきます 36 謝辞