Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

【R&D DevOps通信】自社OCRエンジン「NineOCR」の学習効率化のためFeature Storeを導入した話

こんにちは。研究開発部 Architect グループの八藤丸です。
この記事では、先日プレスリリースが出た Sansan 独自の OCR エンジン「NineOCR」の学習に Feature Store を導入した経緯や、周辺技術の選定について書いていきます。
jp.corp-sansan.com

NineOCR 自体についての詳しい説明は以下の記事にまとまっています。
非常に丁寧に書かれており、読みやすい記事なので個人的におすすめです。

名刺に特化した文字認識エンジン「NineOCR」 - Sansan Tech Blog

また、本記事は Sansan Advent Calendar 2022 の6日目の記事になります。
adventar.org



導入の経緯

NineOCR 開発・運用で抱えていた課題の1つにデータ収集に時間がかかるため学習を頻繁に回せない、分析着手に時間がかかるというものがありました。
データ収集に時間がかかっていた要因は、以下が挙げられます。

  • データ生成時に NineOCR にアクセスする必要がある
  • GEES(弊社の名刺データ化システム)と学習データで形式が異なり、補正ロジックが必要
    • さまざまなリソース(Elasticsearch, S3, RDS, NineOCR API など)にアクセスする必要があり、手間がかかる
    • 従来は手動実行
  • 生成したデータを契約に則って永続化する仕組みがない

これらを解決するために、3つの解決策が考えられました。

  1. NineOCR の処理結果をキャッシュ対応させる
  2. データ投入を自動で行う API の開発
  3. 解約に対応できるデータストア

1に関しては、以下の記事で書いたキャッシュシステムがあったため、ようやく2と3の開発を進めることができる状態になったわけです。
【R&D DevOps通信】自社製OCRのキャッシュシステムについて - Sansan Tech Blog
Feature Storeは、3の解決策に当たる機械学習モデルの特徴量を保存、共有、管理するための基盤になります。

学習は一度実行して必ず期待通りのモデルが出来上がるものではなく、諸々条件を微調整しながら、何回も繰り返して行う必要があるのですが、微調整する条件の一つに何を学習データとするかというところがあり、一つの実験ごとに欲しいデータを数日かけて作成して、その後ようやく学習し始めるとなると、モデルの改善に膨大な工数が必要になるので、研究員にとっても負担が大きいものであり、学習に必要なリソース含めて全体的にかかるコストが大きくなってしまっていました。
Feature Store を導入することで、常に最新のデータを含む大量のデータから必要な情報を高速にピックアップしてすぐに学習に取り掛かることができるようになるので、学習にかかるコストの削減に加えて、モデルの改善サイクルを加速させることが可能になります。

周辺技術の選定

Feature Store

最初、選定の際に以下2つのサービスが候補に挙がりました。

  • S3 + Athena
  • OpenSearch

どちらも効率的に特徴量を保存できて、検索性にも優れていたのですが、サービスの解約が行われた際に、対象のデータを Feature Store からも削除する必要があったため、最終的に既存の GEES の解約処理の運用に乗っかるために OpenSearch を選定しました。
最速でのリリースを目指していたことに加えて、本プロジェクトの最大の懸念点は解約処理であり、既存の GEES の解約処理の仕様に完全に沿うのが最速であると判断しました。
GEES は S3 と OpenSearch どちらの解約処理もサポートしているのですが、S3 の場合、フラットなフォルダ構成のみをサポートしており、Athena を使うためにパーティションを切ることができなかったため、柔軟にメンテナンス可能な OpenSearch を採用しています。

WebAPI

当初は定期実行されるバッチで日次でデータを投入することを想定していたのですが、こちらも既存の解約処理のフローに組み込むために WebAPI を採用しています。
また、私のチームではプロジェクトで初めて WebAPI を EKS 上に構築しています。
EKS 導入の背景などは最近出た以下の記事にまとめられています。

アプリケーション基盤としてKubernetesを導入、そして周辺技術選定と運用設計 - Sansan Tech Blog


最終的に全体の構成は以下の図のようになっています。

Feature Store構成図

まとめ

今回ご紹介した Feature Store のリリースは完了しており、日に日に学習に使える特徴量が Feature Store に溜まり続けています。
これで NineOCR の開発・運用の課題となっていた問題の一つが解決されたので、NineOCR の改善をより短いサイクルで実現することができるようになったかなと思います。
今後もNineOCRをさらに高精度化すべく、学習データ収集の効率化・継続的な性能監視を含めた MLOps に取り組んでいます。

求人情報

求人情報です。私達Architectグループは北海道、東京、名古屋、大阪にメンバーが点在しています。
hrmos.co
hrmos.co

© Sansan, Inc.