IT & AIテクノロジー

「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 プロダクト開発部
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 プロダクト開発部
画像生成技術の進化 ~GANからディフフュージョンモデルまで~

IT & AIテクノロジー

画像生成技術の進化 ~GANからディフフュージョンモデルまで~

こんにちは!株式会社Qualiteg研究部です! 今日は画像生成技術について投稿いたします。 みなさまご存じの通り人工知能による画像生成技術は、過去10年間で急速な進化を遂げました。 今年は2024年。ちょうど2014年に「GAN」がでて10年です。 テキスト系生成AIの勢いがすごい昨今ですが、画像生成AI、超解像AIからの動画生成AIなどコンピュータビジョンかいわいも大きく進化を遂げていますね。 本記事では、主にGenerative Adversarial Networks (GAN)とディフフュージョンモデルに焦点を当て、画像生成技術の歴史的な発展を振り返ります。特に、これらの技術が画像生成と超解像の分野でどのように応用されてきたかを詳しく見ていこうとおもいます。 ブログ本編の前に! ダイジェスト動画あります! 本ブログのダイジェストを以下の動画で語っておりますので、よろしかったらこちらもご覧くださいませ! GANとディフュージョンモデル GANとは GAN(Generative Adversarial Network)は、2014年にIan Goodf

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 プロダクト開発部
【LLMセキュリティ】ハルシネーションの検出方法

LLM セキュリティ

【LLMセキュリティ】ハルシネーションの検出方法

こんにちは、Qualiteg研究部です。 本日は、RAGにおけるハルシネーション検出に関する、こちらの論文について解説をしつつ、ハルシネーション検出をおこなうLLMについて考察をしてみたいと思います。 "Lynx: An Open Source Hallucination Evaluation Model" https://arxiv.org/pdf/2407.08488 概要 LYNXという、RAG(Retrieval Augmented Generation) システムにおいて参照なしで高品質なハルシネーション検出が可能なオープンソースのLLMの構築方法、仕組みに関する論文です。 RAGシーンにおいて、LLMが生成する回答が、質問やコンテキストに対して「忠実」であるかどうかを判定することで、ハルシネーションを検出することができます。 研究の成果である、ハルシネーション判定のために llama3ファインチューニングがほどこされたモデルは 以下に公開されています。 https://huggingface.co/PatronusAI/Llama-3-Patronus-Lynx

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 プロダクト開発部
革新的なコード生成LLM "Codestral Mamba 7B" を試してみた

LLM

革新的なコード生成LLM "Codestral Mamba 7B" を試してみた

今日は、2024年7月16日にリリースされた新しいコード生成LLM、"mistralai/mamba-codestral-7B-v0.1"(通称:Codestral Mamba 7B)を試してみました。 このモデルは、新しいMambaアーキテクチャを採用しており、Apache2ライセンスで公開されています。 コード生成のSOTAモデルに迫る性能 Mamba アーキテクチャを採用した Codestral 7B ですが、Human Eval で 75% を達成しており、Transformerベースのコード生成 SOTA モデルと同等のパフォーマンスを実現しています。 さらに、シーケンス長に対しての処理劣化がないため、かなり期待のできるモデル&アーキテクチャといえますね。 動画にまとめています "mistralai/mamba-codestral-7B-v0.1" の試用レポートはこちらの動画にもまとめてありますので、よろしければ、こちらもご覧くださいませ Codestral Mamba 7Bの特徴 1. 無限の長さのシーケンスをモデル化する能力 2. 長いシー

By Qualiteg プロダクト開発部