タグ

関連タグで絞り込む (427)

タグの絞り込みを解除

*programに関するsh19910711のブックマーク (8,599)

  • Poincaré Embeddings でJ1リーグのチーム・選手を可視化 - u++の備忘録

    ふと「Poincaré Embeddings」*1で遊んでみたいと思い立ち、サッカーJ1リーグのデータで試してみました。 Poincaré Embeddings gensimでの実装とデータセット Poincaré Embeddingsの学習 活用方法 おわりに Poincaré Embeddings Poincaré Embeddingsに関する説明は、ABEJA*2やscouty*3のブログに譲ります。 Poincaré Embeddings は端的に言うと word2vec の埋め込み先をユークリッド空間ではなく双曲空間にするという手法で、階層構造やべき分布をもつデータを埋め込むという問題設定において、低次元でもよい表現を与えられるという特徴があります。 Poincaré Embeddings による職種の類似度計算とその利用 - LAPRAS AI LAB gensimでの実装とデ

    Poincaré Embeddings でJ1リーグのチーム・選手を可視化 - u++の備忘録
    sh19910711
    sh19910711 2024/05/11
    "gensimの実装では正則化の影響で周囲にノードが集結しすぎないような工夫 / チーム名が中心 + 円周側に選手 / 「浦和レッズ」の近くに「サンフレッチェ広島」が配置 + 移籍した選手の影響ではないか" 2019
  • 近似最近傍探索ライブラリHnswlibのRuby bindingを作った - 洋食の日記

    はじめに Hnswlibは、C++で書かれたHierarchical Navigable Small World graphsによる近似最近傍探索ライブラリである。近似最近棒探索のベンチマークでも上位に登場する。Ruby bindingがなかったので作成した。 hnswlib | RubyGems.org | your community gem host 使い方 インストールは、普通にgemコマンドでインストールできる。外部ライブラリもPythonも必要ない。 $ gem install hnswlib APIは単順にバインドしたものと、それらをラップしたAnnoyライクなHnswIndexを用意した。 検索インデックスの作成は、以下のようになる。データを追加すれば、それでグラフ構造が内部で作られるので、build_indexみたいなメソッドはない。 データベクトルはRuby Array

    近似最近傍探索ライブラリHnswlibのRuby bindingを作った - 洋食の日記
    sh19910711
    sh19910711 2024/05/10
    "Hnswlib: C++で書かれたHierarchical Navigable Small World graphsによる近似最近傍探索ライブラリ / ベンチマークではAnnoyよりも良い検索性能を得ているので、Annoyでイマイチなときに使ってみると良いかも" 2021
  • 「Rubyのしくみ」 "10.times do"から始まる冒険 - ぱろっと・すたじお

    お正月って、あらゆる気力を奪われる時期なわけですよ 長期休みって意味では夏休みも変わらないはずなのに、 世間の空気感も含めて、全力で怠惰になるというか、 ゲームをやる気力すら削がれるというかc(・ω・`c )っ そのうち布団から出るのすら面倒になり、 布団の中で積んでいた漫画を崩した結果、読むものがなくなり、 ついに積んでいた技術書を崩し始める・・・そんな時期なのでございます ・・・というのがどこまで当かはともかくとして、 お正月にだらだらと読んでいたがこちらに(´・ω・)っ Rubyのしくみ -Ruby Under a Microscope- 作者: Pat Shaughnessy,島田浩二,角谷信太郎出版社/メーカー: オーム社発売日: 2014/11/29メディア: 単行(ソフトカバー)この商品を含むブログ (1件) を見る Rubyist Magazine - 書籍紹介『Ru

    「Rubyのしくみ」 "10.times do"から始まる冒険 - ぱろっと・すたじお
    sh19910711
    sh19910711 2024/05/10
    "「こういう言語にしたい」という「理想」が起点 / 「概念」や「理想」が先行しているからこそ、JRubyやRubiniusのような他の処理系も存在できるわけで、そのあたりの解説も面白いものになってます" 2015
  • huggingfaceのaccelerateを使って訓練時のCUDA out of memoryを回避する - Qiita

    はじめに 学習スクリプトを実行しているときにGPUにメモリが乗り切らなくてCUDA out of memoryで処理が落ちてしまい、学習スクリプトを最初から実行し直すハメになることがよくあります。 特に自然言語処理とかだと、batch毎に最大系列長に合わせて短い系列をpaddingするような処理をしている場合、毎ステップで必要なGPUメモリが変化するため、バッチサイズを大きく設定していると1エポック終わるまで不安で仕方ありません。 さらにTransformerベースのアーキテクチャーを使っている場合は、消費メモリが系列長に対して2乗のオーダーなので、ちょっと長い系列長のデータがあったら想定以上にメモリを消費して溢れてしまうケースとかもよくあるんじゃないでしょうか。 huggingfaceのaccelerateというライブラリ内のfind_executable_batch_sizeという機能

    huggingfaceのaccelerateを使って訓練時のCUDA out of memoryを回避する - Qiita
    sh19910711
    sh19910711 2024/05/10
    "Transformerベースのアーキテクチャーを使っている場合は、消費メモリが系列長に対して2乗のオーダー / accelerate: TPU、GPU、CPUでの実行を同じコードで記述できる / accelerate launch {スクリプト名}.pyのように実行" 2023
  • RAGを用いた社内情報検索システムを導入した話

    はじめに こんにちは、助太刀バックエンドチームの市川です! 助太刀では、2024 年 2 月に以下の生成 AI の活用した社内情報検索システムに関するプレスリリースを発信しました。 助太刀、生成 AI を使った社内 Wiki を開発。生成 AI の活用により社内業務の効率化を強化 今回は、その社内情報検索システムに関する LLM(大規模言語モデル)、RAG(Retrieval-Augmented Generation) を用いた検索システムの構築について紹介したいと思います。 上記プレスリリースにも記載がありますが、主に社内業務効率化を目的とし開発・導入しました。 RAG とは RAG(Retrieval-augmented Generation) とは、質問やプロンプトに対して出力する答えを作る過程で、あらかじめ用意された外部データベース内の既存情報を参照(Retrieval)することで

    RAGを用いた社内情報検索システムを導入した話
    sh19910711
    sh19910711 2024/05/09
    "社内ドキュメントの保存に基本的に Google Drive を利用 / Kendra Google Drive コネクタ: 動作が不安定 / 人事関連の迅速な情報アクセス: 結婚に伴う人事関連の手続き => 必要なフォームと詳細な申請プロセスが直ちに提供"
  • AWS Step Functionsの単体テスト実施手順 | takemikami's note

    AWS Step Functionsの単体テストをローカル環境で実施したい場合、 AWSのドキュメントに「AWS Step Functions Local」を使った方法が記載されており、 AWS Step Functionsから呼び出す処理(Lamda,SQSなど)をモックする方法もあります。 ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local.html モックサービス統合の使用 | ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local-test-sm-exec.html

    AWS Step Functionsの単体テスト実施手順 | takemikami's note
    sh19910711
    sh19910711 2024/05/09
    "Step Functionsの単体テスト: ドキュメントに「AWS Step Functions Local」を使った方法が記載 + 呼び出す処理(Lamda,SQSなど)をモックする方法もあり / 繰り返しの実施をしやすいようにpytestに組み込む"
  • ランダムフォレストをスクラッチで実装したい - Qiita

    非Deepな機械学習手法としてランダムフォレスト (Random Forest) を選択する場面は多々ありますが、基的にライブラリ任せになってあまり中身を意識することがありません。ので、今回はランダムフォレストの内部的な仕組みを確認しつつ、それを踏まえてPythonでスクラッチ実装していこうと思います。 ランダムフォレストについて ランダムフォレストの仕組みに関する分かりやすい記事は探せばいくらでもあるので、ここでは以降が読みやすくなるよう実装の視点から少し解説をつけておきます。 ランダムフォレストはたくさんの決定木から構成され、決定木はノードから構成されます。イメージとしては以下のようになります。 なので、実装の手順としては、 ノード : Node 決定木 : DecisionTree ランダムフォレスト : RandomForest の3つのクラスを実装していきます。 1. ノード

    ランダムフォレストをスクラッチで実装したい - Qiita
    sh19910711
    sh19910711 2024/05/09
    "sklearn.tree は使わない縛り / RandomForest: 入力されたデータからランダム抽出したサブセットを各決定木への入力とすることで多様な木を構築 + 抽出の際、使用する特徴量についても選択" 2020
  • PuLP で変数の和や内積を計算する際の注意点 - Qiita

    TL; DR PuLP で大きなモデル作るなら、numpy や pandas の sum や dot の使用は避ける。最低でも pulp.lpSum と pulp.lpDot を使い、場合によっては LpAffineExpression を自前で定義する。 はじめに 数理最適化、特に MILP のモデリングツールとして知られている PuLP だが、Python 標準の sum や numpy.sum を使うと、モデルの構築が非常に遅くなるケースがある。今回、次の計算の速度を測定した。 ベクトルの要素の総和 ベクトル同士の内積 実験環境は、Google Colaboratory の無償版。Jupyter notebook 上のセルで、10 回走らせたうちの最良の計算時間を採用した(%%timeit -r 10 -n 1)。Python のバージョンは 3.7 で、各ライブラリのバージョンは下

    PuLP で変数の和や内積を計算する際の注意点 - Qiita
    sh19910711
    sh19910711 2024/05/09
    "PuLP: 大きなモデル作るなら numpy や pandas の sum や dot の使用は避ける / 和や内積の計算は、PuLP の関数を使うか、できれば LpAffineExpression を再定義 / numpy の内積だとかなり遅い" 2021
  • MicroPython × BLE × テプラ 〜リバースエンジニアリングを添えて〜 /micropython-ble-tepra

    sh19910711
    sh19910711 2024/05/09
    "テプラ: スマホから印刷できるTEPRA Lite LR30という機種 + BLEで通信 / 通信内容をリバースエンジニアリングして自分のプログラムから印刷できるようにしよう / ESP32: 軽量なBluetoothスタック + 秒でWi-FiとBLEを喋らせられる" 2021
  • Slack経由でRAGにコードレビューを依頼するBotを作成 〜 AWS SAM編 - Qiita

    はじめに 前回の記事では、リーダブルコードの原則に従ったコードレビューを自動化できないものか・・と考えた結果、『RAGにリーダブルコードの原則を取り込ませてコードレビューをしてもらおう!!』という検証をしてみました。 検証環境の構築は AWSマネジメントコンソール を使用していましたが、今回は AWS SAM を使用して、より簡単に環境構築する方法の解説を行います。 使用するリポジトリは以下になります。 事前準備 リージョン切り替え 全ての手順は「東京リージョン」で実施することを前提としているため、AWSのマネジメントコンソールからリージョンを「東京」に変更してから手順を進めてください。 Cloud9 ローカルマシンの環境を汚さないために、Cloud9 を使用して環境構築を行います。Cloud9 には、今回の作業に必要な以下のツールが事前にインストールされているため、環境構築がスムーズに行

    Slack経由でRAGにコードレビューを依頼するBotを作成 〜 AWS SAM編 - Qiita
    sh19910711
    sh19910711 2024/05/09
    "リーダブルコードの原則を取り込ませてコードレビューをしてもらおう / Cloud9: AMTCで付与された一時クレデンシャルの権限では IAMロールやIAMポリシーに対するアクセス権限が制限"
  • 軽量LLMをGoogle ColabでPPO ファインチューニング - Qiita

    超軽量LLMのflan-t5-baseをPPO(Proximal Policy Optimization)でファインチューニングしてみました。今回の目的はプログラムを動かすことなので訓練のハイパーパラメータやモデル改善度など基的に見ていません。いずれ格的に実行する時の足がかりに、と思ってやりました。 CPUでは実行できませんでしたが、Google Colabで無料でも使えるT4 GPUで実行できました。動かすことを目的としているので、精度などはあまり見ていません(時間制限を気にせず使えるようにColab Pro契約してます)。 実行環境 2024/4/14時点のGoogle Colab で、Python3.10.12で、以下のパッケージを主に使っています。numpyなど少しだけ使っているやつは省略。 Package Version 備考

    軽量LLMをGoogle ColabでPPO ファインチューニング - Qiita
    sh19910711
    sh19910711 2024/05/09
    "flan-t5-baseをPPOでファインチューニング + T4 GPUで実行できました / 30分ほど訓練 + RoBERTaのヘイトスピーチモデルを使ったToxicity判定で、0.022から0.012へとToxicityが低下 / PPOTrainerを作成。学習率など適当"
  • LLMの事前評価のシステムアーキテクチャを紹介します

    この記事の概要 こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事では、「YOJO事業部のプロダクト内で使用されているLLM(Large Language Models)の機能の性能を事前評価するための仕組み」について、システムのアーキテクチャをご紹介しています。 LLMを用いて実現している具体的な機能については詳しく触れていませんので、その点ご理解ください。 LLMにおける事前評価とは何か まず、プロダクトにおけるLLM(Large Language Models)機能の評価がどのようなものかについて簡単に説明します。 LLMの特徴の一つとして、「出力が確率的である(毎回異なる)」という点があります。そのため、LLMで生成された文章や出力に対しては、出力結果の良し悪しを定量的に計測する方法が必要になります。 弊社における定量的な計測は、大きく次の2

    LLMの事前評価のシステムアーキテクチャを紹介します
    sh19910711
    sh19910711 2024/05/09
    "LLMで生成された文章や出力に対しては、出力結果の良し悪しを定量的に計測する方法が必要 / CSVにはPromptLayerのrequest_idとバージョンをスコアとセット + Cloud Storageに保存 + Data Transfer Serviceを用いて、定期的にBigQueryに同期"
  • LightGBMによる物性予測モデルの計算過程を視覚化する - Qiita

    はじめに LightGBM の中身について理解するためにやってみたメモ 環境 記事では以下を事前にインストールしておく必要がある。 Graphviz Python numpy pandas matplotlib scikit-learn LightGBM RDKit Graphvizについては、ツールをインストールした後、Pythonのライブラリをインストールする必要がある。Python: LightGBM の決定木を可視化して分岐を追ってみる や、【Windows10】Graphvizのインストール等を参考にしてほしい。 モデル構築 まずはRDKitを使ってもモデルを作成してみよう。 まずはモジュールのインポート import numpy as np import pandas as pd from matplotlib import pyplot as plt from sklear

    LightGBMによる物性予測モデルの計算過程を視覚化する - Qiita
    sh19910711
    sh19910711 2024/05/09
    "データフレームのままLightGBMで学習を行うと可視化の際にpandasの列名が特徴名として表示 / plot_treeメソッドにより可視化 + dump_modelというメソッドを使うとjson形式でモデルの情報が得られる" 2022
  • 【PyTorch+Numpy】Dataloaderに潜むありがちなバグ - ころがる狸

    PyTorchは素晴らしい機械学習フレームワークですが、データ読み込みに使うDatasetとNumpyによる乱数発生の組み合わせは思わぬバグの発生源となっているようです。2021年4月10日に投稿されたこちらの記事がTwitter上で話題になっています。 tanelp.github.io 一言で要約するなら:PyTorchでデータを読み込む際にマルチプロセス処理を行うと、親プロセスのNumpyの乱数生成器の状態が子プロセスに継承されるため、ランダムであるべき配列の値がすべて同一になる。上記の記事にはコードもついているので、どういうことか手を動かして確認してみましょう。 悪い例その1と解決策 悪い例その2と解決策 torch.randintの力に頼ろう 悪い例その1と解決策 上の記事でも紹介されているコードがこちらです。numpy.random.randint(0, 1000, 3)で0以上

    【PyTorch+Numpy】Dataloaderに潜むありがちなバグ - ころがる狸
    sh19910711
    sh19910711 2024/05/08
    "DatasetとNumpyによる乱数発生 / データを読み込む際にマルチプロセス処理を行うと、親プロセスのNumpyの乱数生成器の状態が子プロセスに継承されるため、ランダムであるべき配列の値がすべて同一になる" 2021
  • Rのdbplyrでサブクエリを構築すると分かりやすい

    記事は最近読んだ次の記事からインスピレーションを得ました。 RのdplyrやPythonpolarsのようなパッケージでデータフレームの操作に慣れている人ならば、Rのdbplyrを使うことで、バグが少ない上に早くサブクエリを構築することができます。 何千回も実行するSQLならば時間をかけてチューニングされたSQLを構築したほうがよいと思いますが、分析の試行錯誤のサイクルを早く回したい場合など数十回ぐらいしか実行しないSQLならば、dbplyrから実行したほうがよいでしょう。 それではざっくり元記事に沿って例を説明します。 カラムのサブクエリ 大分類(major_category)で絞って、該当する作品を表示する例をお借りします。 まず素直にms_categoriesテーブルから該当するcategory_idを抜き出しておいて、%in%で求めると、 category_id_fiction

    Rのdbplyrでサブクエリを構築すると分かりやすい
    sh19910711
    sh19910711 2024/05/08
    "集約した情報を使ってフィルターするなどの処理はデータフレームの得意とする部分 / RのdplyrやPythonのpolarsのようなパッケージ: バグが少ない上に早くサブクエリを構築することができます"
  • レイマーチングのための複雑な距離関数 - Qiita

    レイマーチングで使える複雑めな距離関数を収集していきます。 球や直方体など単純な図形に関しては以下にまとまっているので、ここでは触れません。 Inigo Quilez :: fractals, computer graphics, mathematics, shaders, demoscene and more Recursive Tetrahedron http://glslsandbox.com/e#55834.0 四面体のIFSによる繰り返しです。最終的に四面体の頂点に対して距離を計算しています。 #define ITERATIONS 8 float deRecursiveTetrahedron(vec3 p, vec3 offset, float scale) { vec4 z = vec4(p, 1.0); for (int i = 0; i < ITERATIONS; i++)

    レイマーチングのための複雑な距離関数 - Qiita
    sh19910711
    sh19910711 2024/05/08
    "Menger Sponge: 再帰的にクロス状の図形との論理差を取ることで穴を開けていきます / 六角形: 単純にmodを用いた繰り返しを使用してもうまくいきません + タイリングを2つに分けてそれぞれ距離を計算し論理和で結合" 2019
  • ChatGPTとデバッグ:落とし穴から抜け出す方法 - アイソモカ

    プログラミングの9割はデバッグだ。いや、さすがにそれは言い過ぎか。それでも、デバッグ(うまく動かないプログラムを修正すること)がプログラミングの大切な一部であることは間違いない。先日SNSを見ていたら、ChatGPTをプログラミングに活用することについて「うまくプロンプトを与えても、生成されたプログラムが自分の要求仕様通りになることはまずなく、自分で修正する必要がある」と言っている人がいて、ちょっと驚いてしまった。自分で修正するなよ、ChatGPTに「思い通りに動かない」と説明して直してもらえばいいのに。 でも、考えてみると、公開されているChatGPTの使い方(プロンプト集や活用事例)は、仕様を説明してプログラムを書いてもらう方法や、アーキテクチャに関する相談……デバッグ以外の部分が圧倒的に多い。 ChatGPTにデバッグの相談をしないなんてもったいないと思う。私は趣味のプログラミングプ

    ChatGPTとデバッグ:落とし穴から抜け出す方法 - アイソモカ
    sh19910711
    sh19910711 2024/05/08
    "複数ターン: 完璧なコードを生み出すプロンプトを書こうと我々がひとりで頭を捻る必要ない / ユーザーが何を求めているのかについて一発で正解を見出すのは困難 + 違うなと感じたら自分が求めるものを明示的に指示"
  • tqdmでメモリリークにハマった話(機械学習) - Qiita

    事件 PytorchのResNetモデルを使って画像の訓練をしていたら、エポックのループ毎に、CPU / GPUメモリ両方の使用率がガンガン上がっていく事件に遭遇した。 解決方法(tqdmの使い方) tqdmは、進捗をプログレスバーで表示してくれる便利なライブラリだが、そこに落とし穴があった。 import tqdm # 訓練画像の data loader をループを回す for x in tqdm(loader): y = model(x)

    tqdmでメモリリークにハマった話(機械学習) - Qiita
    sh19910711
    sh19910711 2024/05/07
    "ResNetモデルを使って画像の訓練をしていたら、エポックのループ毎に、CPU/GPUメモリ両方の使用率がガンガン上がっていく事件 / enumerateでラッパーしてからtqdmを噛ませる" 2021
  • Kedroで機械学習パイプラインに入門する - Qiita

    はじめに Kedroという機械学習向けパイプラインツールを使ってみたので備忘までに記事を書きます。 とりあえずパイプラインを組んでみて動いたところまで、です。もう少し使い込んで、別途投稿できればと思っています。 公式のチュートリアルの差分は、以下くらいかなと思います。(どっちもちょっとしたことですが) ホストを汚さないようにDockerコンテナ内でKedroプロジェクトを作成・開発していること node.pyは使わず、普段慣れ親しんだディレクトリ構成で普通にスクリプトを書いていること(それらをノードとしてパイプラインでつないでいる) パイプラインツールの必要性 依存関係が複雑になりがちな処理処理フローを管理したい データ取り込み→データ前処理→モデルのトレーニング→チューニング→デプロイメント、etc ジョブを並列実行したい コンポーネントごとにマシンスペックを柔軟に設定したい 前処理は高

    Kedroで機械学習パイプラインに入門する - Qiita
    sh19910711
    sh19910711 2024/05/07
    "Kedro: Cookiecutterによるプロジェクトテンプレートを提供 + Pandas/Spark の切り替えなどにコードの改変が不要 + parameters.ymlに記述しておけばstringで簡単に読み出せる" 2020
  • Lox (Crafting Interpreters)にdefer文を追加する - 井山梃子歴史館

    Crafting InterpretersはRobert Nystromによるインタプリタ方式のプログラミング言語処理系の作り方の解説である。 ハードカバー・電子書籍が発売されているほか、著者のページでWeb版が無料公開されており、自作言語界隈では人気を博している。 Crafting Interpretersでは著者が考案したLox言語のインタプリタを実装していくこととなる。の前半部分ではAST評価器を扱い、後半部分ではバイトコードVMを用いたインタプリタを実装する。 Lox言語はシンプルとはいえ、クロージャやクラスの継承といった高度な機能も備えたオブジェクト指向スクリプト言語であり、読者は小さなインタプリタからステップ・バイ・ステップでだんだんと完全な処理系を構築していく。 Crafting Interpretersの素晴らしいところには次の点が挙げられるだろう: 平易な文章に加えて

    Lox (Crafting Interpreters)にdefer文を追加する - 井山梃子歴史館
    sh19910711
    sh19910711 2024/05/07
    "Web版が無料公開されており自作言語界隈では人気を博している / 前半部分ではAST評価器 + 後半部分ではバイトコードVMを用いたインタプリタを実装 / GitHubリポジトリで網羅的なテストケースを公開" 2021