サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
新内閣発足
www.ai-shift.co.jp
はじめに こんにちは、AI チームの長澤 (@sp_1999N) です。 弊社では AI Worker という LLM エージェント構築プラットフォームを提供しています。 LLM エージェントを運用していると重要な要素になるのが「可観測性 = Observability」になります。 複雑な推論や複数のアクションを前提とした LLM エージェントでは、その挙動をいかに監視するかが運用上重要なトピックになります。 LLM エージェントの Observability 基盤としては、Datadog など様々な企業からサービスとして展開されており、また OSS として使えるものも多数出現しています。このことからも、LLM エージェントを自社サービスとして提供する場合は、可観測性が重要であることが伺えます。 一方で増えつつある選択肢の中から、どれを選べば良いかというのもよくある悩みです。 そこで今回
こんにちは AIチームの戸田です 今回は、AI Agentが自身で解決できない問題に直面した際に、Slackを通じて人間に助言を求めることができるMCP(Model Context Protocol)、AskOnSlackMCPをつくったので、架空のカスタマーサポートのデモを交えて紹介したいと思います。 https://github.com/trtd56/AskOnSlackMCP Human-in-the-loop 近年、AI Agentの能力が向上し、コーディングや業務効率化など多くの領域で活躍が増えていますが、まだ人間の判断や専門知識が必要な場面は多く存在します。例えばカスタマーサポートのような、複雑な問題解決や感情的な配慮が必要な領域では、AIと人間の協働(Human-in-the-loop)が重要になります。 実現するためのツール これをAI Agentで実現する方法として、一つ
こんにちはAIチームの戸田です。 今回はGemini Diffusionの登場をきっかけに最近話題になった拡散言語モデルの推論過程に興味を持ち、その一例として拡散言語モデルのLLaDAの推論を実際に手元で確認してみた結果を共有したいと思います。 拡散言語モデルに関しては、以前Inception LabsのMercury Coderに関する記事も書かせていただきましたので、こちらも合わせて見ていただけると嬉しいです。 拡散言語モデル ChatGPTをはじめとする現在のほとんどの大規模言語モデル(LLM)は自己回帰モデル(Autoregressive Language Model)と呼ばれ、一方向に一トークンずつテキストを生成します。 前のトークンがすべて生成されないと次のトークンを生成できず、各トークン生成ごとに巨大なニューラルネットワークの計算が必要なため、InceptionLabsのBl
こんにちは、AIチームの干飯(@hosimesi11_)です。 この記事はAI Shift Advent Calendar 10日目の記事になります。本記事では、FastAPIを使ったサーバのプロファイリングについて扱います。 本記事で用いたコードはこちらで公開しています。 はじめに 機械学習モデルのプロダクト組み込みが進むに連れて、データサイエンティストや機械学習エンジニアがモデルのプロダクト組み込みまでやることが増えてきていると感じています。ただ、GoogleのMLOpsの記事にある通り、これらの職種の方は本番環境クラスのサービスを構築できる経験豊富なソフトウェア エンジニアではない可能性が高いです。 Team skills: In an ML project, the team usually includes data scientists or ML researchers, w
Cookbookに乗っているサンプルコードを参考に、レストラン予約を行うVoicebotを構築してみたいと思います。ロールプレイングでDB接続などは行いません。 import base64 import asyncio import numpy as np import openai from fastrtc import ( AdditionalOutputs, AsyncStreamHandler, Stream, get_twilio_turn_credentials, wait_for_item, ) from gradio.utils import get_space from openai.types.beta.realtime import ResponseAudioTranscriptDoneEvent, ResponseOutputItemDoneEvent SAMPLE
こんにちは AIチームの戸田です 今回はHugging Faceが提供しているAgent Frameworkのsmolagentsが非常に興味深かったので、実際に触ってみた内容を共有します。 smolagentsは、Agentをシンプルに構築できることを目的としたライブラリで、従来のAgent Frameworkと比較して以下の2点で差別化されています。 シンプルな設計: 必要最小限の抽象化でAgentの構築が可能。公式のコードも約1,000行と軽量。 CodeAgent: Pythonコードを直接生成・実行することで、処理ステップを削減し、パフォーマンスを向上。 特に注目すべきは、後者のCodeAgentという仕組みです。CodeAgentは、タスクに応じたPythonコードを生成し、それを実行することで複雑なロジックや操作を簡潔に処理できる点が優れています。 なぜCodeAgentが必
こんにちは、AIチームの二宮です。 この記事は AI Shift Advent Calendar 2024の14日目の記事です。 はじめに Model Context Protocol (MCP)とは、Anthropicから公開されたOSSで、LLMがさまざまなツールやリソースを活用するための標準プロトコルです。MCPはClaude以外のモデルでも利用できるように設計されています。そこで、今回はOpenAIのモデルを用いたMCP Clientを実装してみます。 MCPの実装は、Anthropicが公開しているTutorialが非常にわかりやすいので、そちらを進めていただくことをおすすめします。特に今回はQuickstartでのMCP Serverの実装と、Building MCP clientsでのMCP Clientの実装を終えた状態から始めます。ディレクトリ構成は以下のようになっていま
DALL-E3で生成 こんにちは、AIチームの戸田です 近年注目を集めている大規模言語モデル、ChatGPTやClaudeなどのAPIから利用できるサービスはもちろんですが、最近はMetaのLlama2などのオープンモデル、つまりLocalにダウンロードして使うことのできるモデルの開発も活発です。 オープンモデルを試すには強力なGPU環境が必要です。例えばLlama2 70Bモデルを動かすとなると、GPUのメモリは80GB以上は必要になってきます。しかし現在GPUは不足していると言われており、ハードウェアはもちろんのこと、クラウドサービスでもなかなかA100のような十分なスペックを持つGPUを確保することが困難です。量子化などのテクニックはありますが、70Bクラスになるとこれにも限界があります。 私が以前参加したKaggleのコンペティション、LLM Science Examではsimje
はじめに こんにちは、AIチームの大竹です。 最近、高性能な日本語音声認識モデルのリリースが相次いでいます。普段、音声認識を用いたプロダクト開発をしている中で、各モデルの音声認識性能や推論速度がどれくらいのものなのか気になったので簡単な実験をして性能を比較してみました。 書き起こしや評価周りの実装も記載しているので参考にしていただけたら幸いです。 モデルの直近のリリースをまとめると、以下のようになっています。ReazonSpeechコーパスのリリースを皮切りに日本語に特化した音声認識モデルの開発の勢いが加速しているように思えます。ReazonSpeechコーパスは、地上波テレビ放送から収集された音声に基づいて構築されています。v1では19,000時間、v2では35,000時間の音声が含まれていて、日本語音声認識モデルの学習リソースとしては世界一の規模となっています。 公開時期 モデル名 公
こんにちは AIチームの戸田です 今回は先月スタンフォード大学が発表した新しいParameter-efficient fine-tuning(PEFT)のReFTを試してみたいと思います。 PEFT PEFTはLLMのような大規模な事前学習済みのニューラルネットワークのモデルを、効率的にfine-tuningする手法の総称です。モデル全体ではなく一部のパラメータだけを更新することで計算コストを大幅に削減できる上に、Full fine-tuning(モデル全体を学習)するのと同等の性能を達成することができると言われています。代表的なものにLow-Rank Adaptation(LoRA)が挙げられます。 ReFT Representation Finetuning (ReFT)は、LoRAとよく似たPEFT手法です。違いは、LoRAがモデルの重みを部分的に更新するのに対し、ReFTはモデルの
はじめに こんにちは、AIチームの杉山です。 LLMを組み込んだプロダクトは、その出力にハルシネーション(幻覚)が含まれる可能性を考慮し、後処理や処理フローを整えて正常系として動作することが必要です。ハルシネーションを検知する方法は様々提案されていますが[1][2][3]、今回の記事ではOpenAI社のChatGPTが出力するlogprobを用いてトークン単位での出力がどれくらい尤もらしいかを可視化したいと思います。 ChatGPT Log Probability ChatGPTのAPIでは、リクエストにlogprobs=Trueを指定することでトークン単位でのLog Probabilityを取得することができます。[4] Log Probabilityは、コンテキストが与えられたときに各トークンがシーケンスに出現する対数確率で、本記事では出力におけるそのトークンの尤もらしさとして扱います
こんにちは、AIチームの戸田です。 以前同じタイトルでブログを公開しました。 LLMを利用したFAQ検索の評価データセットの作成 前回の取り組みではLLMを用いて、以下の2つの手法を用いて、評価用の想定質問(クエリ)の生成を試みました。 FAQのタイトルのパラフレーズを生成 FAQの回答内容から質問内容を抽出 どちらの手法も概ね評価データとして適切なクエリが生成されましたが、1の手法は生成のバリエーションに乏しく、2の手法ではFAQが回答している内容と関係のない文章から質問が生成されてしまう、という問題がありました。 今回はそのブラッシュアップとして、2の手法をベースに生成時のpromptの工夫について取り組んだので、その際の取り組み内容と知見を共有しようと思います。 今回の取り組みの背景やFAQ検索の評価データセットの形式については前回の記事をご参照ください。 生成promptの改善 前
こんにちは! AIチームの戸田です 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書かせていただきました。 Kaggleで学んだBERTをfine-tuningする際のTips①〜学習効率化編Kaggleで学んだBERTをfine-tuningする際のTips②〜精度改善編〜Kaggleで学んだBERTをfine-tuningする際のTips③〜過学習抑制編〜Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜Kaggleで学んだBERTをfine-tuningする際のTips⑤〜ラベルなしデータ活用編〜 今回は学習効率化について書かせていただきます。このテーマは以前書かせ
こんにちは AIチームの戸田です 今回は日本語LLMのOpenCALMの7BモデルをSFTからRLHFまで一通り学習してみたいと思います。一通り動かすことを目的としており、パラメータ調整やデータクレンジングなどのより良い学習を行うための工夫は本記事では行いません。 言語モデルの一連の学習については以前、記事で取り上げさせていただきましたのでそちらをご参照いただければと思います。 trlxを用いた文書生成モデルの学習①~ILQL編~trlxを用いた文書生成モデルの学習②~PPO編~ 以前は学習ライブラリにtrlxを使用しましたが、今回はSFT用のTrainerを提供してくれているtrlを使います。 データセット JGLUEのMARC-jaを使って、ポジティブな文章を生成するように学習させたいと思います。MARC-jaは多言語のAmazonレビューコーパス(MARC)の日本語部分に基づいて作ら
はじめに こんにちは、AIチームの杉山です。 今回の記事では、QA検索などを行う際の文類似度の計算に、文の埋め込みベクトルを用いてknnで計算した場合とSVMを用いた場合の結果を簡易的ですが定量的に比較してみたいと思います。 動機としては、LangChainのRetrieverの実装にkNNだけでなくSVMを用いた実装が採用されており、その説明の中で以下のようにSVMの方が良いことが多いとされていたことでどれくらい性能が異なるかを確認したいと思ったためです。[1][2] TLDR in my experience it ~always works better to use an SVM instead of kNN, if you can afford the slight computational hit 具体的には、クエリ自身だけを1クラス、検索対象のドキュメント集合全体を別の1ク
こんにちは、AIチームの友松です。2023年3月1日にOpenAIより待望のWhisperとChatGPTのAPIが公開されました。 WhisperはOpenAIが作成した音声認識モデルで多言語の認識や翻訳、プロンプトによる制御ができることが特徴になっています。 ChatGPTは対話形式の大規模言語モデルで非常に質の高い応答をすることから世の中的にかなりの話題になっています。GPT-3.5シリーズのモデルにRLHF(人間のフィードバックによる強化学習)をすることによって、大規模言語モデルの出力の調整を行っています。筆者もChatGPTが出た当初裏側に人間のオペレータが大量に待ち構えて応答を行っているのではないかと疑うくらいの衝撃でした。 RLHFに関しては本ブログでも取り上げているのでこちらの記事も合わせて御覧ください。 trlxを用いた文書生成モデルの学習①~ILQL編~trlxを用いた
こんにちは AIチームの戸田です 今回は最近話題のChatGPTの学習に使われているRLHF(Reinforcement Learning from Human Feedback)を行うことができる強化学習フレームワーク、trlxを使った文章生成を試してみたいと思います。 trlxは強化学習手法としてILQL(Implicit Language Q-Learning)とPPO(Proximal Policy Optimization)の2種類が用意されており、それに加えて通常の言語モデルの学習であるSFT(Supervised Fine-Tuning)も実装されています。 本記事では日本語感情分析データセットWRIMEのデータでILQLを使った学習を行い、PPOは次回の記事で試したいと思います。trlxライブラリを一通り動かすことを目的とし、パラメータ調整やデータクレンジングなどのより良い
こんにちは.AIチームの二宮です. 本記事では,最近話題のPrompt-tuningのご紹介と,実装・実験・分析を行ってみました. はじめに 近年,言語モデルの大規模化が著しいです.例えば,huggingfaceで公開されている日本語版のいくつかの言語生成モデルGPTのパラメタ数は以下になります. (M: million, B: billion) rinna/japanese-gpt2-xsmall: 37M rinna/japanese-gpt2-medium: 336M rinna/japanese-gpt-1b: 1.3B abeja/gpt-neox-japanese-2.7b:2.7B naclbit/gpt-j-japanese-6.8b:6.8B BERT-baseが約110M,BERT-largeが約340Mであることを考えると,非常に大規模であることを実感しますね.最近話
こんにちは!AIチームの戸田です! 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書かせていただきました。 Kaggleで学んだBERTをfine-tuningする際のTips①〜学習効率化編 Kaggleで学んだBERTをfine-tuningする際のTips②〜精度改善編〜 Kaggleで学んだBERTをfine-tuningする際のTips③〜過学習抑制編〜 Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 今回はラベルなしデータの活用について書かせていただきます。 世の中の様々な問題を、蓄積された大量のデータを使った教師あり学習で解こうとする試みは多くなされてい
こんにちは 青野(brn)といいます 株式会社AI Shiftで開発責任者してます こんな人間です 株式会社AI ShiftのAdventCalender 22日目です 今更ですがBunについてです 全然追えていなかったんですが、ひとしきり騒ぎが終わったっぽいのでブログのネタとして調べてみることにしました 一応2018年くらいから V8 のContributorしたり、こんな記事 https://abcdef.gets.b6n.ch/entry/2019/12/11/121840 https://abcdef.gets.b6n.ch/entry/2019/07/22/142510 を書いているので、まあそのシリーズの一環として場所を会社のテックブログに移してやっていこうかと Bun 2022にReleaseされたJavascript RuntimeでBundlerなヤツ ウリとしては 速い
TOPTECH BLOG【AI Shift/Kaggle Advent Calendar 2022】Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 【AI Shift/Kaggle Advent Calendar 2022】Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 こんにちは!AIチームの戸田です! 本記事はAI Shift Advent Calendar 2022、及びKaggle Advent Calendar 2022の9日目の記事です。 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書
こんにちは!AIチームの戸田です。 本記事はAI Shift Advent Calendar 2022の1日目の記事です。 本記事では少量データで高精度なテキスト分類モデルを学習できると言われているフレームワークSetFit(Sentence Transformer Fine-tuning)をkaggleの入門コンテスト、Natural Language Processing with Disaster Tweetsで試して、他の手法と比較してみようと思います。 SetFitとは 背景 BERTをはじめとする大規模言語モデルは、fine-tuningによるタスク適用でデータリソースの少ないドメインでもロバストな精度を実現することができると言われていますが、それでもfine-tuningで安定した精度を出すためには数百のデータは必要になってきます。 近年話題になっているGPT-3はfew-s
こんにちは、AIチームの友松です。本日はレポーティング作業の運用効率化のためにスプレッドシートとBigQueryの連携を行ったので、それについてブログを書こうと思います。 AI Shiftでは普段、レポーティングのためのデータの可視化にはTableauを使用しています。Tableauは毎日更新が必要なレポートを作るのに最適なツールであると考えています。 一方で、今回必要だった要件として、スプレッドシート上でデータが毎日更新されて、さらにデータを1行ずつ確認して各行にメモを残す必要があるという要件だったので、調査を行いました。 BigQueryとGoogle Spread Sheetが連携できるようになったのは知っていたのですが、まだ試せていなかったのでこれを機に利用してみたら非常に便利だったのでメモを残したいと思います 想定しているケースは以下になります エンジニアじゃないメンバーがデータ
こんにちは AIチームの戸田です 今回は最近リリースされたHuggingFaceをベースにした音声処理用のツール、HuggingSoundを使って音声認識を試してみます。 HuggingSoundはHuggingFaceが公式に出しているものではなく、リオデジャネイロ大学のJonatas Grosman氏が個人的に開発しているライブラリで、今年に入ってリリースされたばかりの新しいライブラリです。 日本語の音声認識モデルはGrosman氏がこのライブラリを使ってCommon Voice、 CSS10、 JSUTをfine-tuningしたものを公開してくれていますが、本記事ではイチからfine-tuningを試してみたいと思います データ準備 学習に使用するデータは声庭で公開されているデータを利用します。声庭は有志でアノテーションを行っている公開音声データで、利用・修正・再配布が自由なオープ
こんにちは AIチームの戸田です 今回は音声特徴抽出ライブラリ、openSMILEを使った音声分類を試してみたいと思います openSMILE openSMILE (open-source Speech and Music Interpretation by Large-space Extraction) は、音声分析、処理、分類のためのオープンソースのツールキットです。主に感情認識の分野で広く用いられています。 C++で書かれていますが、Pythonのラッパーがあり、pipで簡単にインストールできます。 ComParE 2016やGeMAPSなど様々な特徴セットを利用することができ、データフレーム形式で出力されるので、後段の処理も作りやすいものになっています。 使用できる特徴セットはドキュメントのFeatureSetの項目をご参照ください。 音声分類 openSMILEを使って分類問題を
こんにちは AIチームの戸田です 今回は日本語NLPライブラリであるGiNZAのv5から実装されたTransformerモデルによる固有表現抽出を試します。 固有表現抽出とは、入力となる自然文から地名や製品名などの固有名詞を抽出するタスクです。今回固有表現抽出に使用するデータセットとして、ストックマーク株式会社が作成したWikipediaを用いた日本語の固有表現抽出データセットを使用します。また、Transformerモデルは処理に時間がかかるので、環境はGoogle ColaboratoryのGPU環境を利用しました。 事前準備 wgetを使ってデータセットをダウンロードします。 wget https://raw.githubusercontent.com/stockmarkteam/ner-wikipedia-dataset/main/ner.json 必要なpythonライブラリをダ
こんにちは、AIチームの東です。 本記事はAI Shift Advent Calendar 2021の18日目の記事です。 今回は、Heartex社が提供しているアノテーションツールであるLabel StudioとGCP上でのデプロイの手順について紹介していきます。 Label Studio 近年、テキスト翻訳や対話アシスタントなど、深層学習を用いたプロダクトやサービスが多くみられるようになりました。 しかし、一般にそのような大規模なモデルを利用するには入力データ(音声、画像、テキスト等)とその正解ラベル(発話内容、画像の説明文、翻訳結果等)が大量に必要になります。モデルの学習に利用する入力データと正解ラベルの組を作成する作業をアノテーションと呼び、現在様々なアノテーションツールが開発、提供されています。 Label Studioはそんなアノテーションツールの一つで、画像やテキスト、音声な
こんにちは AIチームの戸田です 自然言語処理でよく扱われるタスクの一つである文書分類、精度を上げる工夫などはよく見られますが、実務ではどうしてその分類になるのか、その判断根拠についての説明が重要になる場面に多く直面します。 機械学習の判断根拠についてはExplainable AI という分野で近年注目されており、昨年のKDD2020のチュートリアルでも扱われていました。 本記事では文書分類を行う手法として、古典的なCountVectorizerとロジスティック回帰を使った手法と、近年主流となっているBERTのfine-tuningを行う手法の両方の判断根拠の可視化について紹介したいと思います。 データセット UCIのSMS Spam Collection Data Setを使います。 5572件のSMSのデータセットで、そのうちスパムSMSが747件あります。 以下のコードでダウンロード
こんにちは AIチームの戸田です 以前、BERTをfine-tuningする際のTipsとして混合精度の利用や、Uniform Length Batchingをつかった学習効率化を紹介させていただきましたが、今回はTPUを使った高速化について紹介したいと思います。 Flax TPU対応というと、まずGoogleのTensorflowが思い浮かびますが、今回は同じGoogleのニューラルネット学習用フレームワークのFlaxを使います。 FlaxはTensorflowと比較して簡潔に、かつ柔軟に書くことができると言われており、huggingfaceのtransformersもv4.8.0からFlaxをサポートするようになっています。 JAX/Flax has joined the ranks of PyTorch and TensorFlow in 🤗Transformers! Versio
次のページ
このページを最初にブックマークしてみませんか?
『株式会社AI Shift|サイバーエージェントグループ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く