joaopauloschuler/neural-api
CAI NEURAL API - Pascal based deep learning neural network API optimized for AVX, AVX2 and AVX512 instruction sets plus OpenCL capable devices including AMD, Intel and NVIDIA.
何であるか
CAI Neural API は Free Pascal / Lazarus で書かれたディープラーニングライブラリです。トランスフォーマー、Mixture‑of‑Experts、RWKV、xLSTM、スパイキングニューロン、ノーマライジングフロー、CNNなど、幅広いニューラルネットワーク層を実装しており、AVX/AVX2/AVX‑512対応CPUまたはAMD、Intel、NVIDIAのOpenCL対応GPU上で実行できます。フレームワーク全体が1つのネイティブ実行可能ファイルにコンパイルされ、PythonインタプリタやCUDAランタイム、大規模な依存関係チェーンは不要です。
何ができるか
| 機能 | 仕組み(READMEに記載) |
|---|---|
| 大規模言語モデルの実行 | HuggingFace instructチェックポイント(例:Qwen 2.5、Qwen 3、Llama、Mistral、Phi‑3、OLMoE)を読み込み、ChatTerminal CLIで対話するか、ChatServerでOpenAI互換HTTPサーバーを公開します。 |
| テキストから音楽生成 | MusicGenTextはT5エンコーダー+MusicGenデコーダーを使用し、「ゆったりしたピアノのローファイヒップホップ」といったプロンプトを音声ファイルに変換します。 |
| 音声処理 | MusicSourceSeparationで楽曲をステムに分離;Qwen2AudioChatで音声対応モデルと会話できます。 |
| 画像の超解像 | SuperResolutionはリポジトリに同梱された事前学習済みネットワークを使用して画像を拡大します。 |
| 標準的なビジョンデモ | CIFAR‑10/‑100、MNIST、Fashion‑MNIST分類、ResNet‑20、DenseNet、MobileNet風の分離畳み込み、オートエンコーダー、GANアート、勾配上昇可視化など。 |
| 学習ユーティリティ | TNNetFitスタイルのクラス(TNeuralImageFitなど)は、ネットワークの適合、学習率制御、慣性、モデルチェックポイントの保存を簡単なAPIで提供します。 |
| データ処理 | TNNetVolumeは1D/2D/3D配列を柔軟に扱える型で、SIMD操作をサポートし、OpenCLバッファ間での転送も可能。 |
どんな人が使うか
- Python、PyTorch、CUDAを導入せずにネイティブPascalアプリケーション内にディープラーニングを組み込みたいシステムプログラマー。
- 単一のバイナリが望ましい組み込み環境や低依存デプロイ(例:エッジデバイス、PythonランタイムのないWindows/Linuxサーバー)。
- 既存コードベースと統合できる即戦力のニューラルネットワークスタックを探しているPascal愛好家/Lazarus開発者。
- RWKV、スパイキングニューロン、Mixture‑of‑Expertsなど、あまり一般的でないアーキテクチャを、高度に最適化されたマシンコードにコンパイルできる言語で実験したい研究者。
使い始め方
- Lazarus(IDE)をインストールし、GPUアクセラレーションが必要な場合は適切なOpenCLドライバーをインストール。
- リポジトリをクローンし、
neural/フォルダをLazarusのユニット検索パスに追加。 - 例題プログラムの1つ(例:
examples/ChatTerminal/ChatTerminal.lpr)をビルド。 - READMEに記載された対応モデルのHuggingFaceチェックポイントを指定して実行。
制限事項/注意点
- ライブラリはPascalのみ。
masterブランチではDelphiでは動作しません(Delphi対応は古いv2.0.0リリースに限定)。 - GPUサポートはCUDAではなくOpenCLに依存しているため、NVIDIA GPUにはOpenCLドライバー層が必要です。
- パフォーマンスが重要なコードはAVX/AVX2/AVX‑512向けに手動最適化されています。古いCPUでは実行速度が遅くなる可能性があります。
- 複数の教育用例や事前学習済みモデルを提供していますが、プロダクション用モデルズーとの統合はユーザーに任されています。
- 上記のすべての情報はリポジトリのREADMEから直接取得したものであり、追加機能は推測されていません。*
関連
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト