名古屋出身ソフトウェアエンジニアのブログ

Python

Python でジェネリック型の型パラメータを実行時に取れるようにする Mixin 作った

Python でジェネリック型の型パラメータをランタイム時に取得できる抽象を提供するライブラリ Reification を作りました。前回記事「Python のジェネリック型から実行時に型パラメータを取得する方法」の内容を綺麗に実装した感じです。 このライブラリを使用すると、ジェネリックなクラスにランタイムでその型パラメータを認識させ、それに基づいた動作をさせることができます。具体的なユースケースとしては、コードの動的型検査の強化や、型パラメータを動作上の意味付けとして利用することなどが考えられます。 …

ELYZA Japanese LLaMA 2 13B を WEB デプロイ

ELYZA Japanese LLaMA 2 13B を WEB デプロイ
ELYZA Japanese LLaMA 2 の 13B モデルがリリースされたのでお試しです。量子化済みモデルの中から fast-instruct-q5_K_M を選びました。 7B を扱った先回記事とだいたい同じ内容を Ubuntu で行っています。 Llama.cpp の Python バインディング (CPU) である llama-cpp-python は OpenAI 互換の API サーバーを内蔵しているので、ここに Chatbot UI (WEB フロントエンド) を接続することで、ChatGPT サービスのように WEB から ELYZA Japanese LLaMa 2 を使うことができます1。 …

Python のジェネリック型から実行時に型パラメータを取得する方法

Python の型ヒントには、ジェネリック型も存在します。しかし、現在の Python の実装では、ジェネリック型のインスタンスやクラスには、実行時に型パラメータの情報は一切残っていない(型消去的動作)です。 本記事では、Python のジェネリック型の型注釈で実行時に型パラメータを取れるようにする方法を紹介します。 …

ELYZA Japanese LLaMA 2 (CPU) を Chatbot UI から遊ぶ

ELYZA Japanese LLaMA 2 (CPU) を Chatbot UI から遊ぶ
先回記事の続きです。前回紹介した Elyza の日本語言語モデル ELYZA Japanese LLaMa 2 を Chatbot UI から使えるようにしてみました。 Llama.cpp の Python バインディングである llama-cpp-python は OpenAI 互換の API サーバーを内蔵しているので、ここに Chatbot UI を接続することで、ChatGPT のように WEB から ELYZA Japanese LLaMa 2 を使うことができます1。 …

pip-licenses で Python プロジェクトの OSS ライセンスをまとめて確認

OSS を活用したクラウドサービス開発では、使用する OSS のライセンス管理が重要です。中でも、クラウド提供を頒布行為とみなす AGPL ライセンスの OSS が混入すると法律的な問題に発展する可能性があるため、これを確実に避ける必要があります。 今回は Python 開発において、ライセンス管理を助けてくれるツール pip-licenses について具体的な使用方法を紹介します。 …

ELYZA Japanese LLaMA 2 のローカル実行を試す

ELYZA Japanese LLaMA 2 のローカル実行を試す
仕事で使うかもしれないとなったので、GPU 搭載の Windows マシンで ELYZA Japanese LLaMa 2 をお試し動作させました。現時点での手順を簡潔にメモします。 …

Mypy による型チェック入門

元所属していた研究室の方が Mypy を使っているのを観測し、今はどの程度使えるようになっているのか、使用感などを体験してみることにしました。 …

Debian に Python をソースからインストールする

VPS の Debian に最新の Python をインストールする必要があり、初めて Python をソースからビルドしました。 ビルド自体は非常に簡単で、既存の Python を壊さず共存インストールまでできるので良かったのですが、依存パッケージの選定にやや苦労したのでメモを残します。 …