タグ

ブックマーク / engineering.mercari.com (42)

  • 品質要件が厳しいLLMアプリケーションのトライアル評価を通じて得た知見 | メルカリエンジニアリング

    こんにちは。メルペイ Machine Learning エンジニアの@gucciです。 この記事は、Merpay Advent Calendar 2023 の16日目の記事です。 はじめに 2023年3月、OpenAI社がChatGPTを発表して以来、大規模言語モデル(LLM)の可能性に世界中が注目しています。企業や個人がLLMをどのように活用できるかを模索する中、実際にLLMを用いたプロダクトが市場に登場し始めています。メルカリグループでも、社内向け・プロダクト向けの両面でユースケースを探索してきました。 その一環として、7月に実施したぐげん会議[1]で入賞した返済相談チャットシミュレーターの一部分について、トライアルでオフラインの品質評価を実施しました。この記事では、その結果とそこから得られた学びについて共有します。 品質評価における課題意識 各種の学術試験やベンチマークテスト等、汎用

    品質要件が厳しいLLMアプリケーションのトライアル評価を通じて得た知見 | メルカリエンジニアリング
  • 協調フィルタリングとベクトル検索エンジンを利用した商品推薦精度改善の試み | メルカリエンジニアリング

    こんにちは、メルカリのレコメンドチームで ML Engineer をしている ML_Bear です。 以前の記事 [1] では、item2vecと商品メタデータを用いた、メルカリのホーム画面のレコメンド改善のお話をさせていただきました。今回は商品詳細画面でレコメンド改善を行ったお話をさせていただきます。商品詳細画面の例は図1の通りです。ユーザーはアイテムの詳細な説明を見たいときにこの画面に来訪するため、同様の商品を推薦する自然な接点として非常に重要です。 まず、私たちが商品詳細画面で行った改善の概要を示します。各部の詳細については次節以降で詳しく触れます。 日有数の大規模ECサービスにおいてベクトル検索ベースの商品推薦アルゴリズムを実装し、推薦精度の大幅な改善を実現しました。 協調フィルタリングとニューラルネットワーク (以下、NN) を利用した商品推薦アルゴリズムを構築し、コールドスタ

    協調フィルタリングとベクトル検索エンジンを利用した商品推薦精度改善の試み | メルカリエンジニアリング
  • テストコードの改革を進めている話 | メルカリエンジニアリング

    はじめに この記事は、Merpay Tech Openness Month 2023 15日目の記事です。 こんにちは。メルペイ加盟店精算チームのバックエンドエンジニア@r_yamaokaです。 今日は現在自分がリードして取り組んでいるテストコードの改善について紹介したいと思います。 抱えている課題 私が所属している加盟店精算チームのマイクロサービスは加盟店さま向けサービスとして欠かせないものであり、メルペイ最初期から存在するサービスです。他のマイクロサービスにあまり無い特徴として多数のバッチ処理を行っている点が挙げられます。 お客さま(メルペイユーザー)がお店で行った決済は、一定の頻度で集計し決済手数料を差し引いた上で加盟店さまの銀行口座へ振り込むことになります。 最終的な振込金額を算出するまでの流れとしては 個々の決済金額のリコンサイル(会計マイクロサービスとの金額照合) 日次集計 締

    テストコードの改革を進めている話 | メルカリエンジニアリング
  • GoによるSQLクエリテストの取り組み | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の1日目の記事です。 背景 メルペイのバックエンドエンジニアのa-r-g-vとsminamotです。私達はメルペイ加盟店の管理システムを開発しているチームに所属しています。私達のチームには、複雑な条件を持つBigQueryのSQLクエリがいくつか存在しています。例えば、加盟店管理に関する費用計算などの計算クエリのように、外部環境の変化によって要件が定期的に変更され、マイクロサービス化などのシステム化が難しいクエリがあります。このようなクエリは複雑であるだけでなく、テスタビリティにも問題がありました。そのため、開発者がテストを実施することが困難になっており、クエリの変更を安心して行うことができない状態にありました。 クエリの複雑性 抽出条件の複雑さと複数のマイクロサービスへの依存により、クエリが複雑になっていました。

    GoによるSQLクエリテストの取り組み | メルカリエンジニアリング
  • メルカリにおける機械学習による検索のリランキングへの道のり | メルカリエンジニアリング

    記事は2023年1月1日に公開された記事の翻訳版です。 メルカリのマーケットプレイスにおける商品検索は、お客さまが欲しい物を発見する最も基的な方法です。この中核となる機能は、テキストマッチングによる情報検索システムによって実現されています。 しかし最近、私たちは自問自答しました。お客さまの検索体験を向上させる、合理的な機械学習ベースのアプローチはあるのだろうか?という疑問が生まれました。メルカリアプリ上のお客さまの行動を、彼らにとってより関連性の高い検索結果についてのヒントとして捉えることはできないでしょうか?学習データにラベルを付け、単体のユーザークリックという行為をもとにした分析の限界を念頭に置きながら、モデルが学習するための、より情報量の多いコンテキストを構築できないでしょうか?ビジネスKPIとの関係を把握するために、どのようにデータラベリングを利用できるでしょうか? それは、

    メルカリにおける機械学習による検索のリランキングへの道のり | メルカリエンジニアリング
  • The Journey to Machine-Learned Re-ranking

    Search is the most fundamental way users discover what Mercari marketplace has to offer; our users rely on search to find the items they want. This core functionality is powered by a traditional text matching information retrieval system. But recently, we asked ourselves: Is there a reasonable machine-learning based approach that could improve the search experience for users? This led to more ques

  • マイクロサービスな組織との向き合い方 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の25日目の記事です。 こんにちは。メルペイCTOのnozaq(@nozaq)です。 メルペイのシステムはマイクロサービスアーキテクチャを採用し、ドメインごとにサービスが分割されています。それに合わせて、エンジニアリングチームも関連するマイクロサービス群を担当する形でドメインごとにチームが組成されており、開発から運用までを一貫して担当しています。 記事ではマイクロサービスアーキテクチャに合わせたプロダクト開発におけるチャレンジと、それに対するメルペイの取り組みについてご紹介します。 メルペイにおけるマイクロサービス開発 メルペイでは大きく決済事業(QRコード決済やクレジットカード決済など)と与信事業(あと払いや少額融資など)の2つの領域でサービスを運営しており、これらを提供するためのバックエンドシステムはマイクロサービス

    マイクロサービスな組織との向き合い方 | メルカリエンジニアリング
  • SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の21日目の記事です。 こんにちは。メルペイBackendエンジニアのfivestar(@fivestr)です。 記事では「SOLID原則」と呼ばれる設計原則に沿って実際に行ったリファクタリングについて、メルペイの「あと払い」サービスの開発現場事情を踏まえながらご紹介していきます。 あと払いの歴史とコード負債 私が所属するCredit Designチームではメルペイの「あと払い」や「メルペイスマートマネー」といった与信サービスの開発を行っています。中でも「あと払い」はメルカリが2017年にリリースした「メルカリ月イチ払い」を前身とする歴史の長いプロダクトであり、単純な機能追加だけでなく、設計上大掛かりな変更を伴う修正を繰り返しながら今日まで成長してきました。 例えば、あと払いをメルカードの決済・清算のバックエンドとして統

    SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング
  • Machine Learning 共通基盤構築の振り返り〜チーム立ち上げからクローズまで〜 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の17日目の記事です。 こんにちは。メルペイ 機械学習チームでエンジニアリングマネージャーをしているshuukです。 日は、Machine Learning Platformチーム(以下:ML Platformチーム)をクローズした話をしていこうと思います。 MLの共通基盤という魅力的なアイディア もしあなたが、複数のMLチーム(またはMLシステム)が並行稼働している組織にいる場合、それらの共通部分を括り出した基盤を作り、MLエンジニアはその基盤の上で作業したほうが効率的だと考えたことはないでしょうか。 実際、MLの構成要素は、おおまかには特徴量計算、学習、予測、サービングといったパーツに分解することができ、共通部分も多いです。 新しいMLシステムをスクラッチで開発する苦労を知っているMLエンジニアにとって、社内共通のM

    Machine Learning 共通基盤構築の振り返り〜チーム立ち上げからクローズまで〜 | メルカリエンジニアリング
  • 決済システムを壊さずに拡張した話 | メルカリエンジニアリング

    メルペイのBackend Engineerの @Hiraku です。与信決済システムのmicroserviceのTech Leadをしております。 この記事は、Merpay Advent Calendar 2022 の5日目の記事 メルカードの舞台裏編です。 2022年11月8日にメルペイ初のクレジットカードであるメルカードがリリースされました。これに伴い、システムにも広範囲に変更が加わっています。この記事ではその中でもちょっと分かりにくい、メルペイスマート払いの請求タイミングの変更について解説します。 月末ごろにメルカードによる決済を行うとわかるのですが、「処理中」と表示され、翌月の請求に含まれないものがあります。こちらはメルカード特有の実売上処理が終わってから請求する挙動です。順番に解説していきます。 カード決済の流れ 決済は大きく2段階の処理で成り立っています。「オーソリ」や「仮売上

    決済システムを壊さずに拡張した話 | メルカリエンジニアリング
  • 機械学習システムの設計パターンを公開します。 | メルカリエンジニアリング

    メルカリで写真検索とEdge AIチームに所属している澁井(しぶい)です。機械学習のモデルを番サービスに組み込むための設計やワークフローをパターンにして公開しました。 GithubでOSSとして公開しているので、興味ある方はぜひご笑覧ください! PRやIssueも受け付けています。私の作ったパターン以外にも、有用なパターンやアンチパターンがあれば共有してみてください! GitHub:https://github.com/mercari/ml-system-design-pattern GitHub Pages:https://mercari.github.io/ml-system-design-pattern/README_ja.html なぜ機械学習システムのデザインパターンが必要なのか 機械学習モデルが価値を発揮するためには番サービスや社内システムで利用される必要があります。そのた

    機械学習システムの設計パターンを公開します。 | メルカリエンジニアリング
  • 自作して学ぶKubernetes Scheduler | メルカリエンジニアリング

    Mercari advent calender の21日目を担当します@sanposhihoです。現在大学の学部4回生で、メルカリでは内定者インターンとして、メルカリのホーム画面などのバックエンドを担当するチームに所属しています。 また、最近は個人的にKubernetesやその周辺のOSSにコントリビュートをしていて、特にKubernetesのコントロールプレーンのコンポーネントのうちの一つであるkube-scheduler周りを触ってることが多いです。 後で詳しく説明しますが、kube-schedulerはPodをどのNodeで実行するかを決定しているコンポーネントです。NodeAffinityや比較的新しいものだとPod Topology Spread Constraintsなど、Podのスケジュールの制約を指定できる機能も基的にこのkube-schedulerに実装されています。

    自作して学ぶKubernetes Scheduler | メルカリエンジニアリング
  • 公平性に配慮した機械学習 | メルカリエンジニアリング

    こんにちは。メルペイのMachine Learningチームの@hiroです。Merpay Advent Calendar 2021 の18日目の記事をお届けします。 機械学習の社会的重要性の高まり 近年、機械学習という技術領域が人口に膾炙し、多くの産業やプロダクトに用いられるようになってきています。機械学習は、アルゴリズムによって、蓄積されたデータのパターンを学習し、従来ひとの判断やルールベースで行ってきた意思決定を自動化、高精度化することで、様々な産業の生産性向上に寄与し、私達の生活を豊かにしてきました。私達の社会にとってなくてはならない技術領域のひとつになっています。 一方、そうした機械学習の自動判断において、結果的に差別的な振る舞いをしてしまったり、お客さまに不愉快な体験をさせてしまったりといった、社会にネガティブな影響を与えてしまう事案も発生しています。この記事で具体的な事例をと

    公平性に配慮した機械学習 | メルカリエンジニアリング
  • つながりをデータから解き明かしたい ~ 複雑ネットワークの世界とそれを活用した不正検知システム,さらに向こうへ | メルカリエンジニアリング

    つながりをデータから解き明かしたい ~ 複雑ネットワークの世界とそれを活用した不正検知システム,さらに向こうへ この記事は Merpay Tech Openness Month 2021 の14日目の記事です.こんにちは,メルペイのMachine Learningチームのhmjです. 今回は昨年に引き続き「集団的な不正の検知」をテーマに,ここ一年間で少しづつ進めてきた集団的な不正の傾向分析や,検知のための機械学習パイプラインの構築・運用として Vertex Pipelinesの使用を検討しているので,それらの分かったことなどを紹介します. 昨年の記事はこちらとなります. Overview 「集団的な不正の検知」といっても,実際に定義は自明ではありません.その言葉を聞いた人によって,想像する集団の大きさや形,特徴などは様々です. 今回は,カード決済を利用した取引での集団的な怪しい取引のケース

    つながりをデータから解き明かしたい ~ 複雑ネットワークの世界とそれを活用した不正検知システム,さらに向こうへ | メルカリエンジニアリング
  • 画像検索システム再設計のお話 | メルカリエンジニアリング

    こんにちは。メルカリの画像検索チームでTech Leadをしています葛岡です。 今回は、メルカリのMLシステムの中で一、二を争う複雑なシステムである画像検索の基盤を再設計し、経済的にも技術的にもみんなが幸せになったお話をしたいと思います。 画像検索ってなぁに? その名の通り、画像をベースに視覚的に似ている商品を検索する機能です。この機能は2年ほど前にリリースされていて、すでにiOSバージョンのメルカリではご利用いただけます。 当時のシステムはブログ記事になっているので、ご確認ください。 再設計?なにそれ?おいしいの? さてこの機能を支えるシステムですが、当時開発されて以来、大きな再設計などは特になく、つい最近まで運用されていて、画像検索やその他のメルカリサービスでも内部的に呼ばれていて、プラットフォーム的な立ち位置を担っていました。 画像検索は定期的に新しい画像インデックスを構築するのです

    画像検索システム再設計のお話 | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の6日目の記事です。 メルペイでBackendエンジニアをしている柴田(@yoshiki_shibata)です。この記事では、Go言語のtestingパッケージに用意されている並列化の機能について説明します。 Go言語では、テストコードを作成するためのtestingパッケージが用意されています。一般に開発するソフトウェアの規模が大きくなるに従って、作成されるテストコードの量も多くなり、すべてのテストが終了するまでの時間も長くなっていきます。特に、データベースへアクセスするようなテストでは、データベースへの通信時間がテスト時間の多く占めますので、テストコードを逐次実行するよりは並列実行することで、テスト時間を短縮できます(厳密には用語「並行」ですが、t.Parallel()メソッドの説明なので、この記事では用語「並列

    Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング
  • どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング

    Platform チームの@deeeeeeeetです. Platform チームは2年前にMercariがMicroservicesの移行を始めたときに一緒に立ち上げられたチームです.Platform チームはMicroservicesを動かすための基盤や開発や運用のためのツールセットなど提供しています.立ち上げ時は自分を含めて2-3人で始まったチームですが2年が経ち10人を超えるチームにまで成長しました. チームのメンバーが増えるほど1チームとして動くには限界がきており,またMicroservices化が進めば進むほどチームの負う責任範囲も広くなりCognitive load (認知負荷) も高くなっていました.これらの課題を解決するために組織変更を行い,Platform チームを複数の専門性に特化したチームに分割しました. 記事ではチームのデザイン,チームが分離しても独立性を保ちつつ

    どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング
  • 機械学習システムの信頼性を数値化する ML Test Scoreのハンズオンワークショップを開催しました | メルカリエンジニアリング

    こんにちは、メルカリでCRE (Customer Reliability Engineering) に所属している @hurutoriya です。 今回メルカリ社内での勉強会の一環として、Google が提案した機械学習システムの信頼性を数値化する ML Test Score のハンズオンワークショップを開催しました。 記事では、ML Test Score の説明、ワークショップの開催方法や簡単な考察などをお話します。 今回はWFHの影響も受け Google Meet を使ったフルリモートでの開催となりました。 ワークショップの内容として、メルカリ内で実際に運用されている機械学習システムを対象に、実際にそのシステムを開発する機械学習エンジニアが ML Test Score を計算しました。 ML Test Scoreの説明 ML Test Score の目的は、定量化しづらい機械学習シス

    機械学習システムの信頼性を数値化する ML Test Scoreのハンズオンワークショップを開催しました | メルカリエンジニアリング
  • 機械学習システムの設計パターンを公開します。

    メルカリで写真検索とEdge AIチームに所属している澁井(しぶい)です。機械学習のモデルを番サービスに組み込むための設計やワークフローをパターンにして公開しました。 GithubでOSSとして公開しているので、興味ある方はぜひご笑覧ください! PRやIssueも受け付けています。私の作ったパターン以外にも、有用なパターンやアンチパターンがあれば共有してみてください! GitHub:https://github.com/mercari/ml-system-design-pattern GitHub Pages:https://mercari.github.io/ml-system-design-pattern/README_ja.html なぜ機械学習システムのデザインパターンが必要なのか 機械学習モデルが価値を発揮するためには番サービスや社内システムで利用される必要があります。そのた

    機械学習システムの設計パターンを公開します。