どすえのブログ

ソフトウェア開発ブログ

ドメイン駆動設計(DDD)入門

目次: はじめに: ドメイン駆動設計とは ドメイン駆動設計の要素 戦術的設計パターン 戦略的設計: ドメイン駆動設計のコンテキストマッピング ドメイン駆動設計の実践 ドメイン駆動設計とアーキテクチャ 結論: ドメイン駆動設計の採用を検討する 1. はじめに:…

自動微分の概要とnumpyによる実装

1. はじめに 近年、機械学習、特に深層学習が急速に発展し、さまざまな分野でその効果が実証されています。深層学習は、人工ニューラルネットワークを用いて複雑な問題を解決するための手法であり、画像認識や自然言語処理などの分野で優れた成果を上げてい…

Pythonのabcライブラリ入門 - 抽象基底クラスを活用しよう

目次 はじめに 抽象基底クラスの作成 抽象基底クラスを継承する具象クラスの実装 抽象基底クラスを活用した設計パターン abcライブラリと他のPython機能との連携 実践例:abcライブラリを使ったプロジェクト まとめ 1 はじめに Pythonのabcライブラリは、抽…

Reflexion:動的な記憶と自己反省を持つ自律的なLLMエージェント

論文 arxiv.org 実装 github.com はじめに 自己反省をすることで、人間は試行錯誤を繰り返しながら、新しい問題を効率的に解決することができます。この研究ではLLMエージェントに動的な記憶(scratchpad)と自己反省能力(reflections)を付与し、既存の推論ト…

情報幾何学の概要

情報幾何を体系的に理解するためにまず全体像をおおまかにまとめてみます。個別のトピックに関しての記事を随時追加していくつもりです。 1. はじめに 1.1. 情報幾何学とは 情報幾何学は、確率分布や確率モデルの空間における幾何学的構造を研究する学問分野…

深層学習モデルのメモリ節約方法まとめ

目次 はじめに モデルアーキテクチャの最適化 学習プロセスの最適化 データパイプラインの最適化 ハードウェアの最適化 メモリプロファイリングとモニタリング まとめ はじめに 近年、深層学習モデルは画像認識、自然言語処理、強化学習など、様々な分野で驚…

チューリングテスト:そのコンピュータは知性を持つか

チューリングテストの概要 チューリングテストは、コンピュータが人間のように考える能力を持っているかどうかを評価するための試験です。このテストは、イギリスの数学者でありコンピュータ科学の父とも言われるアラン・チューリングによって提案されました…

計算機科学の基本的概念 チューリングマシン

目次 はじめに チューリングマシンの歴史 チューリングマシンの基本概念 チューリングマシンの応用 チューリングマシンとコンピュータの関係 チューリングマシンの限界と問題 はじめに 計算機科学の基本的な概念である「チューリングマシン」についてまとめ…

低ランク行列近似によるLLMの計算効率化手法

LoRA: Low-Rank Adaptation of Large Language Models 元論文 arxiv.org 公式実装 github.com 目次 はじめに LoRAの概要 LLMへの適用方法 実験と評価 LoRAの利点と応用例 まとめと今後の展望 はじめに LLMの課題 近年、LLM(大規模言語モデル)が多くの自然言…

Amazon ECSタスクでのGPUの使用

AWS

ECSでGPUを使う機会があったので、やり方をメモする。 2022.09.22時点ではFargateがGPUに未対応だったため、ECSをEC2(GPU)上に展開する方針をとった。 (このIssueを見ると、まもなくFargateがGPUに対応しそう。) ポイントは ECSに最適化されたAMIを使うこと …

PythonでGoogle SpeechToText REST API を呼び出す

Pythonで Google Cloud SpeechToText を使用する場合、SpeechToTextクライアントライブラリを使うのが一般的だと思うが、REST API から呼び出す機会があったのでメモ。 REST API の公式仕様はこちらに載っている。 cloud.google.com 準備として、APIキーの取…

時系列モデリング手法 HiPPO を読み解く(2)

本記事では、時系列モデリング手法HiPPOの理解を目指し、著者実装をstep-by-stepで動かす。 参考にする著者実装はこちら。 github.com なお、HiPPOの理論は第一部の記事にまとめたのでそちらも参照されたい。 dosuex.com 必要モジュールのインポート from fu…

時系列モデリング手法 HiPPO を読み解く(1)

ICLR2022で発表された、新しい時系列モデリング手法としてS4(Structured State Space Sequence model)というものがある。S4は長距離ベンチマークで従来手法を圧倒的性能で破って話題となった。 S4の論文はいくつかの研究の集大成となっており、核となる技術…

Pythonの辞書の欠損キー操作:setdefaultとdefaultdict

Pythonで辞書に存在しないキーで操作する際は、get()、setdefault()、defaultdict()などのメソッドを用いると良い。 get()による欠損キーへのアクセスは以下を参照。 Python辞書に存在しないキーでの代入 - どすえのブログ setdefault()とdefaultdict()はよ…

確率の期待値から掴むルベーグ積分

論文を読んでいると測度とルベーグ積分というものに出会った。これを機に、入門してみることにした。個人的には、馴染み深い「確率の期待値」を測度・ルベーグ積分の視点から捉え直すと、理解がスムーズだった。 個人的な理解をメモとして残す。 本記事の結…

PyTorchのTensorの生成と要素アクセス

PyTorchのテンソルtorch.Tensorは単一データ型の要素のみを含む多次元テンソルである。 本記事におけるPyTorchのバージョンは1.10.0である。 import numpy as np import torch print(torch.__version__) # 1.10.0 torch.Tensor — PyTorch 1.10 documentation…

Python辞書に存在しないキーでの代入

辞書に存在しないキーで操作するときのベストプラクティスをメモ。getを使う方法3が一番簡潔。 辞書で個数をカウントするようなケースを考える。 counters = { "A": 1, "B": 0, } 新規のキーに対してカウントを増やすには、まずキーがあるかどうか調べ、なけ…

複数docker-compose間での通信

Dockerを用いた開発において、複数のサービスについて各々docker-compose.ymlを作成するケースがある。マイクロサービスの枠組みではこれらのサービス間での通信が必要であるが、ローカル環境において通信に手間取ったのでメモ。 状況 ローカルにて、別々のd…

Python 正規表現の抽出部分で置き換える

正規表現を使ってタグを除去したいときありませんか。 具体的には、これを (地名: 東京都)と(地名: 埼玉県)は隣接しています。 こうしたい。 東京都と埼玉県は隣接しています。 正規表現でタグの中身を抽出して、再度タグを正規表現で捕捉し、抽出内容で置き…

Fortranによる3次元線形補間 | 3D Linear Interpolation

Fortranで3次元の線形補完ルーチンを書く機会があったのでメモ。1次元のケースから確認し、2次元、3次元に拡張する流れで進める。 1次元の線形補間 1次元グリッド上で値がそれぞれ定義されているとする. ここでは, との間にあるにおける値を求めてみる. ま…

非線形カルマンフィルタ (2) - アンサンブルカルマンフィルタ -

目次 目次 本シリーズについて アンサンブルカルマンフィルタ 適用 参考書籍 本シリーズについて 非線形現象に対するカルマンフィルタを本で勉強したのでメモも兼ねてまとめます. 前回の記事 dosuex.hatenablog.com では状態遷移、観測がともに線形である(行…

非線形カルマンフィルタ (1) - 線形カルマンフィルタ -

目次 目次 本シリーズについて TL;DR カルマンフィルタ カルマンスムーザ 実装 参考資料 本シリーズについて 非線形現象に対するカルマンフィルタを本で勉強したのでメモも兼ねてまとめます. 観測データに基づいて, 線形確率システムの状態ベクトルを逐次的…

threadingとQueueを使ったDjangoでのマルチスレッド処理

Djangoで、リクエストが来たら発火する処理が時間のかかるものだった場合、処理自体は裏で走らせておいて、とりあえずレスポンスを返しておきたいというケースがあると思います。 例えば、ユーザー登録が完了した際に確認メールを送信するといった作業です。…

PythonのpsutilでCPU使用率を並列的に監視する

Pythonで何か処理を走らせている時に, CPUの使用率を定期的に監視するスクリプトを書いた. マルチスレッドにすることで, メインの処理を止めずに定期実行できる. 重い処理の計算機負荷の時系列データをレポートしたい時とかに使えるかもしれない. コード全文…