Qualiteg プロダクト開発部

Qualiteg プロダクト開発部
「Windowsターミナル」を Windows Server 2022 Datacenter エディションに手軽にインストールする方法

日々の開発Tips

「Windowsターミナル」を Windows Server 2022 Datacenter エディションに手軽にインストールする方法

こんにちは! 本稿はWindows Server 2022 Datacenterエディションに「Windowsターミナル」をインストールする方法のメモです。 ステップバイステップでやるのは少し手間だったので、Powershellにペタっとするだけで自動的にインストールできるよう手順をスクリプト化しました。 管理者権限で開いた Powershell に以下、スクリプトをペタっとすると、後は勝手に「Windowsターミナル」がインストールされます。 (ただしスクリプトの実行結果の保証も責任も負いかねます) なにが手間か 何が手間かというと、Windows Server 2022 では、StoreもApp Installer(winget)もデフォルトではインストールされていないため「Windowsターミナル」をマニュアルでインストールしなければなりませんでした。 そこでペタっとするだけのスクリプト化 管理者権限で開いたPowershellに以下のスクリプトをペタっとすると「Windowsターミナル」が無事インストールされます。 パッケージのダウンロード先には [ユーザ

By Qualiteg プロダクト開発部
Windows Terminal強制使用を制御する~ForceV2設定ガイド~

日々の開発Tips

Windows Terminal強制使用を制御する~ForceV2設定ガイド~

こんにちは! 最近のWindows 10/11では、従来のコマンドプロンプトの代わりにWindows Terminalが自動的に起動するようになっています。この動作を制御するのが「ForceV2」という設定です。この記事では、ForceV2の詳細と設定方法について解説します。 【ご注意】本稿ではレジストリ操作について扱っています。レジストリの変更は慎重に行う必要があり、誤った操作によってシステムに影響が出る可能性もございます。操作の前にはシステムのバックアップをお取りいただくことをお勧めいたします。 記事の内容は一般的な情報提供を目的としており、お客様の環境によっては動作が異なる場合もございます。操作の実行はご自身の判断と責任のもとでお願いいたします。 ForceV2とは? ForceV2は、Windowsのレジストリで管理される設定値で、コマンドプロンプトの動作を制御することができます * 値が1(デフォルト):新しいWindows Terminalが強制的に使用されます * 値が0:従来のコマンドプロンプト(conhost.exe)が使用されます この設定

By Qualiteg プロダクト開発部
Windows 11の右クリックメニューを従来のWindows 10スタイルに戻す方法

日々の開発Tips

Windows 11の右クリックメニューを従来のWindows 10スタイルに戻す方法

Windows 11では右クリックメニューが簡略化され、「送る」などの便利なメニューが非表示になっています。今回は、これを従来のWindows 10スタイルに戻す方法をご紹介します。 【ご注意】レジストリの変更は慎重に行う必要があり、誤った操作によってシステムに影響が出る可能性もございます。操作の前にはシステムのバックアップをお取りいただくことをお勧めいたします。 記事の内容は一般的な情報提供を目的としており、お客様の環境によっては動作が異なる場合もございます。操作の実行はご自身の判断と責任のもとでお願いいたします。 問題点 Windows 11の右クリックメニューには従来から以下のような変更になり、使い慣れていた身からすると少々不便なことがあります * 「送る」メニューが非表示 * よく使う機能が「その他のオプションを表示」に隠れている * Shiftキーを押しながらの右クリックが必要 解決方法 PowerShellを使って設定を変更できます 1. PowerShellスクリプトの準備 以下のコードを「restore_right_click_men

By Qualiteg プロダクト開発部
PyTorchモデルの最適化~TorchScriptの仕組みと活用法~

NumPy/PyTorch

PyTorchモデルの最適化~TorchScriptの仕組みと活用法~

こんにちは! 本日は PyTorch で開発したAIアプリケーションの本番化に欠かせない、「最適化」についての内容です。具体的には「 TorchScript」 を使用した各種学習モデルの最適化についてみていきたいとおもいます。 TorchScriptの基礎 1 TorchScriptとは TorchScriptは、PyTorchモデルを最適化された中間表現(IR)に変換する技術です。 、、といってもちょっと難しく聞こえるかもしれません。 平易な言葉で言い換えますと、 要するに、PyTorchで作った機械学習モデルを高速かつ多種多様な環境で動作させることをするための技術です。 例えば、、 ・Pythonがインストールされていない環境でも動かせるようにする ・スマホはじめ、各種組み込み機器でも使えるようにする ・動かすときの速度を段違いに上げる ・複数の処理を同時に効率よく実行する などを目論むときは TorchScript がおすすめです。 つまり、TorchScriptは「本番サービス」で使うときにすごく役立ちます。 2 Torc

By Qualiteg プロダクト開発部
【極めればこのテンソル操作 】インプレース操作でメモリ効率化!

NumPy/PyTorch

【極めればこのテンソル操作 】インプレース操作でメモリ効率化!

こんにちは!今日は PyTorchのインプレース操作に関する内容です! ディープラーニングの学習モデルを作ってると、メモリ管理が大きな課題になります。課題の大部分はGPUメモリとお考えの方も多いのではないでしょうか。 そんなときに助けてくれるのが、PyTorchのインプレース操作です! この記事では、インプレース操作の使い方をいろんな角度から見ていきたいとおもいます。 インプレース操作って何? 基本的な考え方 インプレース操作とは、既存のメモリ領域を直接書き換える操作のことです。PyTorchでは、演算子の後ろにアンダースコア(_)をつけることでインプレース操作を実行できます。 つまり、普通の操作だと新しいメモリを確保する必要がありますが、インプレース操作なら既存のメモリを直接書き換えることが可能です。 それでは、実際に見てみましょう! import torch # 普通の操作 x = torch.tensor([1, 2, 3]) y = x + 5 # 新しいメモリが必要 # インプレース操作ならこう! x = torch.tensor([1, 2, 3

By Qualiteg プロダクト開発部
chatstream.net のクエリパラメータ仕様

ChatStream Guide

chatstream.net のクエリパラメータ仕様

chatstream.net は(株)Qualiteg が運用するサービスで、世界中で公開されている最新のLLMをいちはやく体験することができます。 特定の LLM を開いてじっくりチャットをしたり、複数のLLM を開いて協調的につかってみたり、LLM同士で出力を比較させたり、LLMのもつポテンシャルを感じていただけるようになっています。 たとえば、PCブラウザでURLを開くと、4つのLLMを同時に開いて、同時にチャットを行うことができます。このようにお好みに応じてチャットを制御することができるのがURLパラメータです。 https://chatstream.net/?ws_name=chat_app&mult=1&ontp=1&isync=1&model_id=llama_3_elyza_jp_8b&model_id=openai_gpt_3_5_

By Qualiteg プロダクト開発部
ディープラーニングモデルの安全な並列推論とパフォーマンス最適化

NumPy/PyTorch

ディープラーニングモデルの安全な並列推論とパフォーマンス最適化

こんにちは! 今日は、よく聞かれる質問の1つである「単一のモデルインスタンスで安全に並列推論を行えるか?」に関する内容です! evalモードでの並列推論の安全性 PyTorchモデルがmodel.eval()を使用してevalモードに設定されている場合、一般的に並列推論に対して安全になります。 (ここでいう「並列」はマルチスレッドによる処理ととらえてください。バッチ推論については後述します。) その理由は、 1. パラメータの不変性 evalモードでは、順伝播(forward pass)中にモデルのパラメータが更新されません。 2. 学習特有レイヤーの非活性化 BatchNormなどのレイヤーは、バッチ統計の計算ではなく、実行時統計(running statistics)を使用するモードに切り替わります。 3. 入力データの独立性 各スレッドやプロセスは独自の入力データで動作し、それぞれ別のメモリ領域に存在します。 以下は、evalモードでの安全な並列推論の基本的な例です: import torch import th

By Qualiteg プロダクト開発部
【極めればこのテンソル操作 】NumPy配列の縦マージ方法:5つのアプローチ

NumPy/PyTorch

【極めればこのテンソル操作 】NumPy配列の縦マージ方法:5つのアプローチ

こんにちは! 今日は、NumPyにおける配列の縦マージについてご説明いたします! ご存じの通りNumPyは、Pythonで科学的計算を行うための強力なライブラリです。 複数のNumPy配列を縦にマージして大きな配列を作成する方法について、5つの異なるアプローチを詳しく見ていきましょう。 具体的には、(N,128)と(M,128)の形状を持つ複数のNumPy配列が格納されたPythonのリストから、(N+M,128)の形状を持つ単一のNumPy配列を作成する方法を説明します。 1. np.vstack() を使用する方法 np.vstack() 関数は、垂直方向(行方向)に配列をスタックするための関数です。 import numpy as np list_of_arrays = [ np.random.rand(3, 128), np.random.rand(2, 128) ] merged_array = np.vstack(list_

By Qualiteg プロダクト開発部
GPUメモリ最適化の深層:初回と最終バッチの特殊性を踏まえた効率的なAI画像処理

NumPy/PyTorch

GPUメモリ最適化の深層:初回と最終バッチの特殊性を踏まえた効率的なAI画像処理

はじめに こんにちは!Qualitegプロダクト開発部です。 当社では、LLMテクノロジーをベースとしたAIキャラクター、AIヒューマンの研究開発を行っています。そんな中、表情、仕草のように「人間らしさ」をもったバーチャルヒューマンを再現するときには画像生成、画像編集といったAIを活用した画像処理が必要となります。 人と対話するAIヒューマンやバーチャルヒューマンはタイムリーに表情や仕草を生成する必要があるため、複数の画像をフレーム連結してつくるモーション(シンプルにいうと動画)を短時間に生成する必要があります。 このようなとき、AIトレーニングやシンプルな推論とは異なり、いかにGPUの能力を引き出してやるか「GPUの使いこなし術」がミソとなります。 GPUの使いこなし術というと、以前のブログにも連続バッチやダイナミックバッチについてLLM推論のコンテクストで語りましたが、本日は画像処理におけるGPUメモリ最適化、とくに、推論時バッチにおける「初回と最終回」のお作法という少しマニアックな話題について語ってみようとおもいます。 画像処理とGPU GPUを用いた画像

By Qualiteg プロダクト開発部
PyTorchバージョンとNVIDIA GPU Compute Capability Level サポート

PyTorch

PyTorchバージョンとNVIDIA GPU Compute Capability Level サポート

古いPyTorchコード資産を持っている会社は、昔のコードが最新のPyTorchで動かない!最新のGPUで動かない!ということに遭遇することが多いのでしょうか。 今回は、PyTorchバージョン、対応GPU Capability Level 、対応CUDAバージョンについてまとめてみます。 PyTorchがサポートするGPUの Compute Capability PyTorch バージョン サポートされる Compute Capability (SM) レベル 1.0.0 - 1.3.1 SM_35, SM_37, SM_50, SM_60, SM_61, SM_70 1.4.0 - 1.7.1 SM_37, SM_50,

By Qualiteg プロダクト開発部
【極めればこのテンソル操作 】tensor.unsqueeze(0)と array[None] の違い

NumPy/PyTorch

【極めればこのテンソル操作 】tensor.unsqueeze(0)と array[None] の違い

今日は、 unsqueeze(0) の解説しつつ、私たちがよく直面する「あるある」な問題についてもちょこっと話してみたいと思います。 「value.unsqueeze(0)」と「value[None]」 の見分けついていますか? はい、前者は主に PyTorch、後者は NumPyでの操作の違いです。 でもどちらも、ぱっとみは、先頭に新しく次元を追加する操作なので、コードをちらっとみただけではわからないことがありますよね。 なぜかというと、ディープラーニング系のプログラミングでは PyTorchのテンソルと、NumPyの配列操作がかなり入り混じるからです。 そう、今日の話題はPyTorchとNumPyのコードが入り乱れて、どっちの配列(テンソル)を扱っているのわけワカメになる問題です。 ちなみに、話題のテーマをブラさないように PyTorchでは 先頭に新しい次元を追加するときに unsqueeze(0) だけでなく [None] も使えてしまいますが、いったん[None]は NumPy で主に使用する操作という前提で説明させてくださいませ。^^; これに対する当

By Qualiteg プロダクト開発部
【極めればこのテンソル操作 】reshape(N,-1)

NumPy/PyTorch

【極めればこのテンソル操作 】reshape(N,-1)

NumPy reshape: データ形状を自在に操る方法 NumPyのreshape関数は、多次元配列の形状を変更する強力なツールです。この記事では、reshapeの基本的な使い方から応用まで、具体例を交えて詳しく解説します。 1. reshape の基本 reshapeは、配列の要素数を変えずに形状を変更します。 import numpy as np # 1次元配列を作成 arr = np.array([1, 2, 3, 4, 5, 6]) print("Original array:", arr) print("Shape:", arr.shape) # 2x3の2次元配列に変形 reshaped = arr.reshape(2, 3) print("\nReshaped to 2x3:

By Qualiteg プロダクト開発部
【極めればこのテンソル操作】permute(1,0)

NumPy/PyTorch

【極めればこのテンソル操作】permute(1,0)

本記事はPyTorch,NumPy でよくつかうテンソル操作を、頭でしっかりイメージできるようにするための機械学習エンジニア初心者向けシリーズです! 「厳密な正しさ」をもとめるリファレンス的なものではなく、現場でつかうソースコードに頻出するコードで覚えていきましょう。 今日は permute (1,0) permute操作は、テンソルの次元の順序を変更するためによく使用されます。permuteメソッドの引数は、並び替えの順番を指定します。 permute(1,0)は2次元のテンソルにおいては、「転置」テンソルを作る役割を果たします。なぜそうなのか、順を追ってみていきましょう! それでは早速以下のような 2×3 なテンソルを考えてみましょう このテンソルは2次元なので、表で表現できますね。 このとき、このテンソルは PyTorchでは以下のように定義できます。 import torch x = torch.tensor([[1, 2, 3], [4, 5, 6]]) このテンソルの「形状」は、上でもかいたとおり 2 × 3 です

By Qualiteg プロダクト開発部
LLM-Audit ~LLMへの攻撃と防衛の最前線 ~

LLM セキュリティ

LLM-Audit ~LLMへの攻撃と防衛の最前線 ~

はじめに 人工知能技術の急速な進化により、大規模言語モデル(LLM)は多くの企業や組織にとって不可欠なツールとなっています。自然言語処理、コード生成、データ分析など、LLMの応用範囲は日々拡大し、ビジネスプロセスの効率化や創造的タスクの支援など、幅広い分野で革新をもたらしています。しかし、この革新的な技術の普及に伴い、新たなセキュリティリスクも浮上しており、企業はこれらのリスクに対する適切な対策を講じる必要に迫られています。 本記事では、当社が開発したLLMセキュリティソリューション「LLM-Audit」をご紹介します。LLM-Auditは、LLMの入力と出力を徹底的に監査し、セキュリティリスクを最小限に抑える包括的なセキュリティ&セーフティ実現ソリューションです。 従来のセキュリティ対策では対応が難しいLLM特有の脆弱性や、日本語環境特有の課題に対しても高度な保護を提供します。 動画 本記事の内容はこちらの動画でもご覧いただけます。 LLMセキュリティの重要性 LLMのセキュリティ管理が不十分な場合、企業は深刻な結果に直面する可能性があります。 最も懸

By Qualiteg プロダクト開発部
Meta社が発表した最新の大規模言語モデル、Llama 3.1シリーズの紹介

LLM

Meta社が発表した最新の大規模言語モデル、Llama 3.1シリーズの紹介

2024年7月23日、Meta社が最新の大規模言語モデル、Llama 3.1シリーズを発表しました。この記事では、Llama 3.1シリーズの特徴と性能、そして実際の使用例を紹介します。 以下、動画にもまとめてありますので、あわせてごらんいただければと思います。 Llama 3.1シリーズの主な特徴 Llama 3.1シリーズは、8B、70B、405Bの3つのモデルサイズで提供されています。主な特徴は以下の通りです: * 一般的な知識、操縦性、数学、道具の使用、多言語翻訳におけるトップAIモデルに匹敵する初のオープンLLM * コンテクストは128Kトークン * 8言語に対応した多言語モデル(ただし日本語は含まれず) * 15兆以上のトークンでトレーニング モデルサイズ別の特徴 * 8Bモデル: モバイルデバイスや小規模なシステムでの使用に適しており、リソースが限られた環境でも高性能を発揮 * 70Bモデル: 多くのタスクで405Bモデルに近い性能を示しながら、より少ないコンピューティングリソースで運用できる優れたバランスを提供 * 405Bモデル: 最高

By Qualiteg プロダクト開発部
Mistral AI社の最新LLM「Mistral NeMo 12B」を徹底解説

LLM

Mistral AI社の最新LLM「Mistral NeMo 12B」を徹底解説

こんにちは。今回は2024年7月19日にリリースされたMistral AI社の最新LLM「Mistral NeMo 12B」をご紹介します。 本モデルの特徴や性能を解説し、実際にChatStreamを使用してチャットの使用感を確かめていきます。 Mistral NeMo 12Bとは Mistral NeMo 12BはMistral AI社がNVIDIAと協力して開発した最新モデルです。Apache2ライセンスを採用しており、自由に使用、変更、配布が可能な非常に自由度の高いモデルとなっています。 解説動画 本記事の内容は以下の動画にもまとめてありますので、あわせてごらんくださいませ 主な特長 本モデルには3つの大きな特長があります: 1. 大きなコンテクストサイズと高い推論性能 2. 多言語性能 3. 効率的なトークナイザー 1. 大きなコンテクストサイズと高い推論性能 Mistral NeMo 12Bは120億パラメータの比較的小型のモデルですが、同サイズカテゴリーの中でも高い性能を発揮しています。Google社のGemma2 9BやMeta社の

By Qualiteg プロダクト開発部