3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TensorRT-LLMをセットアップしてみた

Last updated at Posted at 2024-05-03

TensorRT-LLMの公式ドキュメントで、落とし穴が多すぎるため、解説を残しておきます。

TensorRTとは

深層学習の推論を高速、低メモリ容量でできるように最適化したソフトウェアです。訓練などの機能を削ぎ落とし、推論だけに特化したソフトウェアです。

TensorRT-LLMとは

TensorRTをLLM (Large Language Model)向けに、使いやすいようにしたパッケージです。既に訓練されたLLMをダウンロードすれば使えるように仕立ててあります。

TensorRT-LLMをセットアップすると何がいいのか

GeForce GPU (1080Ti以降?)を使ってLLMを回すことができます。
自宅のPCで最先端のLLMをいじることができます。

準備

今回は以下の環境を使いました。今日現在で全て最新版にアップデードしました。CUDAやDockerなどのインストール/アップデートの方法は各自調べてください。

環境

Ubuntu 22.04.4 LTS
GeForce RTX 4090
CUDA Version: 12.4
Docker 26.1.1
NVIDIA Container Toolkit 1.15.0

Hugging Face

Hugging Faceのアカウントを登録し、write権限のあるtokenを作成します。
今回使うモデルLlama-2-7b-chat-hfの利用権限を申請します。未申請ならFiles and versionsのタブで申請できます。承認されるとGitHubのようにファイル一覧が見えます。

セットアップ開始

まずは、公式のInstalling on Linuxに沿って全コマンドを実行していきます。このページに落とし穴はありませんでした。

調べればすぐ解決できる落とし穴が一つありましたが、一応書いておきます。
一番最後のコマンドgit lfs installで、

git: 'lfs' is not a git command. See 'git --help'.

The most similar command is
	log

のエラーになり、インストールできないかもしれません。その場合は以下の方法でインストールできます。

apt install curl
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
apt-get install git-lfs
git lfs install

落とし穴1

上記の公式instructionの全コマンド実行し終わる頃、あなたはDockerコンテナの中にいるはずです。

ここでコンテナを出てはいけません!
出るとコンテナが消えて上記の操作を再度繰り返すことになります。

もう一つターミナルを開いてこのコンテナをdocker imageとして保存(commit)します。

必ずrepositoryとtagを tensorrt_llm/release:latest としてcommitしてください!

docker commit <コンテナ名> tensorrt_llm/release:latest

もし、別ターミナルが開けない場合は、Ctrl. + P -> Ctrl. + Q でコンテナを終了せずにディタッチしてdocker imageをコミットできます。

commitが完了したら、出来たdocker imageを確認してみましょう。
docker images

REPOSITORY             TAG       IMAGE ID       CREATED         SIZE
tensorrt_llm/release   latest    6afa6e80a1e8   8 minutes ago   24.8GB

確認できたら、上のコンテナを終了して構いません。

さて、ここまで出来たら公式のQuick Start Guideに行きます。

  1. 指示通りHugging Faceのリポジトリをクローンします。(SSHは使わずHTTPSで)
    git clone https://huggingface.co/meta-llama/Llama-2-7b-chat-hf
    で作成したアカウント名と書き込み権限のあるtokenを入力します。

  2. TensorRT-LLMもう一度(今度はコンテナの外に)クローンします。
    git clone https://github.com/NVIDIA/TensorRT-LLM.git

  3. TensorRT-LLMのフォルダに入り、下記コマンドを実行します。
    make -C docker release_run LOCAL_USER=1
    この操作でdocker imageが作られ、自動的にコンテナが起動します。
    落とし穴1でdocker imageの名前を正しく保存しないとここでエラーになります。

  4. コンテナ内で下記コマンドを実行します。上に同じく書き込み権限のあるtokenを入力します。
    huggingface-cli login --token *****

落とし穴2

ディレクトリが違います!
コンテナが起動し、最初にいるworkdirは/app/tensorrt_llmはHugging Faceリポジトリとリンクしていません。Hugging Faceリポジトリとリンクしているのは/code/tensorrt_llmです。

正しいディレクトリに移動します。
cd /code/tensorrt_llm/exammples/llama

4.あとは、公式の指示に従ってモデルをTensorRTLLMのフォーマットに変換します。

python3 convert_checkpoint.py --model_dir meta-llama/Llama-2-7b-chat-hf --output_dir llama-2-7b-ckpt

5.モデルをコンパイルします。

trtllm-build --checkpoint_dir llama-2-7b-ckpt \
    --gemm_plugin float16 \
    --output_dir ./llama-2-7b-engine

これで、セットアップが完了しました!

LLMを走らせてみよう

python3 ../run.py --engine_dir ./llama-2-7b-engine  --max_output_len 100 --tokenizer_dir meta-llama/Llama-2-7b-chat-hf --input_text "How do I count to nine in French?"

出力結果👇🏻

Input [Text 0]: "<s> How do I count to nine in French?"
Output [Text 0 Beam 0]: "

In French, the numbers from 1 to 9 are:

1 - un
2 - deux
3 - trois
4 - quatre
5 - cinq
6 - six
7 - sept
8 - huit
9 - neuf

So, to count to nine in French, you would say:

un, deux, trois, quatre, cinq, six, sept, huit, neuf."
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?