Posts
機械学習モデルの標準フォーマット
機械学習モデルにも標準規格を Python の(Python に限らずだが)機械学習フレームワークは複数存在する。
それぞれのフレームワークで実装され、そして生成される機械学習モデル(以下、 ML モデル)は、当然ながらそのフレームワーク・ライブラリに特化したものになる。 したがって、例えばライブラリAで実装・学習した ML モデルは、ライブラリA上のみでしか推論・再学習などを行えない。 ライブラリAで作ったモデルはライブラリB上で推論を実行することはできない。 ML モデルはライブラリ間で互換性がないのが基本である。
ところがこうした ML モデルについても、標準規格を設けて普及させる流れがあるらしい。 究極的には ML モデルの実装に使用するライブラリ・フレームワークに制限されることなくモデルをデプロイ、推論に使えるような世の中になる(本当か?)
ONNX とは ONNX(Open Neural Network eXchange, 「オニキス」と呼ぶらしい1)は、まさにその ML モデル表現の標準フォーマットとして策定されたとのこと。
公式によると
ONNX is an open format built to represent machine learning models. ONNX defines a common set of operators - the building blocks of machine learning and deep learning models - and a common file format to enable AI developers to use models with a variety of frameworks, tools, runtimes, and compilers.
Posts
Python でファイルパス文字列
Python でファイルパス文字列を扱う方法について。
ファイルからなにかデータを読み込む、あるいはデータを何からの形式で書き出すなど、言語の種類に関わらずファイル操作は重要である。 そのために、ファイルパス文字列を扱う場面は往々にしてあるわけである。
例えば、ディレクトリ名(dirname)とファイル名(basename)が別々の変数に入っていて、それらをつなげて絶対ファイルパス文字列を作ろうとする際、初心者の頃は愚直に文字列同士を結合する書き方をしていたものだった:
dirname + '/' + filename そのせいで、パスのスラッシュ / がダブったり、あるいは足りなかったりして、エラーを生んでしまうなど…。
そこから多少進歩して、 Python 標準の os.path モジュールを活用して
os.path.join(dirname, filename) と書くようになっていたが、よく調べればちゃんとファイルパスを扱う専用の機能が標準搭載されるようになっていたらしい…。
Pathlib を使おう 公式ドキュメント: https://docs.python.org/ja/3.7/library/pathlib.html
Python 3.4 から標準搭載されるようになった機能らしい。
公式の説明によると
このモジュールはファイルシステムのパスを表すクラスを提供していて、様々なオペレーティングシステムについての適切な意味論をそれらのクラスに持たせています。
ということで、これを使うとファイルパス文字列を、純粋な文字列オブジェクトではなく、ちゃんとした(?)ファイルパスオブジェクト Path で管理できる。
ざっと性質をまとめると以下:
ファイルパス文字列を与えることで、ファイルパスオブジェクト Path を作ることができる 正確には OS の種類に応じたそのサブクラス WindowsPath/PosixPath を作る Windows(WindowsPath) か、非 Windows(PosixPath)か、その OS により決定される それらの親クラスとして PurePath/PureWindowsPath/PurePosixPath があり、これらは実際のIO操作は伴わない単純な計算処理だけを担う つまり posix 環境でファイルパス(文字列)の操作はできるが、ファイルアクセスはできない イミュータブルでハッシュ可能、つまり辞書のキー等にも使える str() でキャストすればファイルパス文字列に戻せる スラッシュ / で Path 同士の結合ができる(= os.
Posts
CEDEC2021に参加した
タイトル通り。 色々な理由で、縁あって受講者側として参加することができた。
CEDEC は「Computer Entertainment DEvelopers Conference」のことで、一般社団法人コンピュータエンターテインメント協会様による主催。 (CEDEC2021ホームページ: https://cedec.cesa.or.jp/2021/ )
文字通り、ゲーム等のコンピュータエンターテイメントに関する開発に携わる人々向けの技術カンファレンスである。
8/24 ~ 8/26 の3日間、オンラインでセッションを聴講する形式で行われた。
私の浅い知識によって、食らいついていけるセッションばかりではなかったが、聴講したセッションはどれも興味深く大変良い刺激を受けたと感じている。
近いうちに、気になったセッションのうち一部について少し触れたいと思う。
Posts
ブログサイトを構成する技術
どんな技術がある? ブログを立ち上げるにあたって、どのような技術を活用しようか…。
まあ基本的には、ブログ = Webサイトということで、究極的には html/css/javascript を自力で構成するわけだが、手動で html ファイルを書いて…というのは、ブログを書くという観点で見るとやはり効率が悪いだろう。
まず最初に考えたのが、シンプルに WordPress のような CMS をセットアップすること。
Linux のコンテナ技術と、それを活用した Docker のようなプラットフォームが発展したおかげで、この手のサーバーソフトウェアのデプロイ・セットアップは容易になったと思う。 が、個人用のカジュアルな雑記ブログを運用する上で、やはりその管理コストが気になった。
独自ドメイン料 デプロイ先のサーバーレンタル料 日々の管理の手間 いくら Docker で半自動的にデプロイできるにしても、適当なタイミングでバージョンアップ対応しないといけない 途中で躓いたら自力で解決しないと まあ、この手の管理に関して真正面から真面目に取り組めば、それはそれで保守・運用の勉強になるはずだが、ブログを書きたいという本来の目的と照らし合わせるとどうにも重たい。 特にお金の問題は避けられない。 個人でやるには高すぎる。
かといって、独自色が抑えられすぎるのもできれば避けたい。 Qiita を使えば技術系の知見のアウトプットはできるが、技術系以外は基本向いていないだろう(ポエムとか書いている人は結構見かけるが)。
満たすべき要件 あくまで自分のブログ = 自分のページを持ちたい、ということで満たすべき要件は以下:
アウトプットに一定の容易さ 文章、画像、… 技術系に限らず話題にできる 管理の手軽さ・安さ 必要に応じてサービス活用の幅を広げられる柔軟さ・カスタマイズ性 これらを考慮した結果「静的サイトジェネレータ + 静的サイトホスティングサービス」の組み合わせが良いのでは、と。
静的サイトジェネレーターとして「hugo」を、静的サイトホスティングサービスとして「Netlify」を選択。
hugo Golang 製 Golang まだ勉強してないけど、単純な興味で Markdown で文章を書き、それから「ビルド」することでページ(html など)を作成できる テーマも自由に選べる Netlify ブログページを管理する Github リポジトリを登録すれば master ブランチへの push によって自動ビルド・デプロイができる そんなに大量のコンテンツを扱わなければ、大抵無料で行けそう 少なくとも個人ブログ程度なら全然問題なし 独自ドメインだけ別途用意すれば良し https 対応も自動でできる(すごい) 早速実践 ブログ用の Github リポジトリ作って ローカルに hugo をインストールして、試しにページ作成(quickstart) リポジトリに仮でできたファイル群を push Netlify に登録 「New site from Git」で、ブログ用の Github リポジトリを選択、ビルドコマンドに hugo を設定してデプロイ 独自ドメインを設定(参考: https://qiita.
Posts
初投稿
ブログ始めました はじめまして。
自分専用のブログを立ち上げたいと思い、ぬるりと立ち上げてみました。 これがこのブログ最初の投稿です。
わざわざ自分専用のブログを立ち上げようと思ったのは
当方、新米エンジニアなので、自分の学んだことを整理してアウトプットする場がほしい いろいろサービスはあるけど(はてなブログとか Qiita とか)、どうせなら自分のブログを作りたい エンジニアリング以外の話題でも、趣味のこととか色々書いてみたい みたいな考えがあってのことです。
色々手探りですが、よろしくどうぞ。
ブログのタイトルについて ブログを立ち上げるにあたって、早速悩んだこと。
「ルテナンの雑記」というブログタイトルにしました。
「ルテナン」とは「ルーテナント(lieutenant)」という軍隊の階級に関する単語に由来しています。 国によって結構違いはありますが、軍隊の階級は、概ね下のようなランク付けがあります。
大枠の階級 階級 将官 大将 中将 少将 准将 佐官 大佐 中佐 少佐 尉官 大尉 中尉 少尉 准尉 下士官 曹長 軍曹 伍長 兵長 兵 上等兵 一等兵 二等兵 ルーテナントはこのうち、中尉にあたる階級を指します。 この階級は全体で見ると結構高めに見えますが、いわゆる「将校」と呼ばれる階級以上(尉官以上)の枠で見ると下の方。 軍士官学校を卒業したばかりの新米将校が就く、いわゆる見習い人の階級です。