Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mdx で試した時の問題に対する修正 #3

Closed
wants to merge 2 commits into from
Closed

Conversation

namgiH
Copy link

@namgiH namgiH commented Jan 14, 2025

お疲れ様です。
こちら、自分が mdx で試した時に問題だったところの修正案です。

+ RUN pip install --no-cache-dir vllm
- RUN pip install --no-cache-dir vllm nvidia-ml-py && \
-     pip uninstall --yes pynvml && \
-     pip install -U --no-cache-dir opencv-python-headless==4.5.5.62

実行の際、ライブラリ問題でエラーがあったのでそれを対応するものです。
具体的には vllm の中でnvidia-ml-pyとpynvmlのConflictがあるのと、
OpencvのLibファイル関連で問題が起こるものに対応しています。

-   --runtime=nvidia \

こちらはなくてもGPU利用に問題がなく、dockerのバージョン次第で読み込めなかったので削除しています。
自分はDocker version 27.1.2でした。

+ # see more examples at https://github.com/vllm-project/vllm/tree/main/examples
+ chat_template = "{{ (messages|selectattr('role', 'equalto', 'system')|list|last).content|trim if (messages|selectattr('role', 'equalto', 'system')|list) else '' }}\n\n{% for message in messages %}\n{% if message['role'] == 'user' %}\n{{ message['content']|trim -}}\n{% if not loop.last %}\n\n\n{% endif %}\n{% elif message['role'] == 'assistant' %}\n{{ message['content']|trim -}}\n{% if not loop.last %}\n\n\n{% endif %}\n{% elif message['role'] == 'user_context' %}\n{{ message['content']|trim -}}\n{% if not loop.last %}\n\n\n{% endif %}\n{% endif %}\n{% endfor %}\n"

Transformers 4.44以降では、デフォルトのチャットテンプレートをサポートしないので、
元のコードだけエラーを起こすため、手動で適当なテンプレートを指定しています。

-     outputs = llm.chat(messages_list)

問題全部を一度で渡すと、コンテキスト長が長くなってしまいエラーが起こっていたので、
一問ずつ投げるように修正しました。

これらは自分が勝手に修正しているものですので、
もしより良い修正案がございましたらそれに従います。
ご確認のほど、よろしくお願いいたします。

@namgiH namgiH requested a review from k141303 January 14, 2025 05:32
@k141303
Copy link
Collaborator

k141303 commented Jan 14, 2025

@namgiH

実行の際、ライブラリ問題でエラーがあったのでそれを対応するものです。
具体的には vllm の中でnvidia-ml-pyとpynvmlのConflictがあるのと、
OpencvのLibファイル関連で問題が起こるものに対応しています。

こちら具体的にどのようなエラーでしたでしょうか?
vllmのバージョンを固定することでは解決できないでしょうか?

Transformers 4.44以降では、デフォルトのチャットテンプレートをサポートしないので、
元のコードだけエラーを起こすため、手動で適当なテンプレートを指定しています。

あくまでllm-jp-3-instructシリーズを想定したサンプルコードのため、元のままで良いかと考えていますが、
Transformers 4.44以降では、llm-jp-3-instructシリーズを動かす場合に問題が発生するということでしたでしょうか?

問題全部を一度で渡すと、コンテキスト長が長くなってしまいエラーが起こっていたので、

こちらはOOMでしょうか?

@namgiH
Copy link
Author

namgiH commented Jan 14, 2025

ご確認ありがとうございました。

こちら具体的にどのようなエラーでしたでしょうか?
vllmのバージョンを固定することでは解決できないでしょうか?

vllmの中でライブラリ変更があったらしいですが:https://github.com/vllm-project/vllm/actions/runs/8805964207/job/24169694868
新しく入れたライブラリにこのようなConflictがあるらしいです:XuehaiPan/nvitop#4
自分も詳しくはありませんが、エラーが出たので検索したとおりに従いました。
エラーのログは保存していませんが、必要でしたら再現をためします。

あくまでllm-jp-3-instructシリーズを想定したサンプルコードのため、元のままで良いかと考えていますが、
Transformers 4.44以降では、llm-jp-3-instructシリーズを動かす場合に問題が発生するということでしたでしょうか?

そうですね、DockerfileでTransformersのバージョンを固定させて解決するのであれば良いと思いますが、
少なくともバージョン指定がない場合、4.44より高いバージョンが入るようで、
そうすると vllm で llm.chat をする際にエラーが起こっていました:vllm-project/vllm#9408
tokenizerにchat templateを指定してないモデルならば起こるエラーらしいですね。
上記のリンクに「普通にChat Templateを入れろ」のIssueがあったのでそれに従っています。

こちらはOOMでしょうか?

いえ、文字列の長さが4096以上になるのでそこでエラーになります。
max_position_embeddings のことを指しています。

@k141303 k141303 mentioned this pull request Jan 14, 2025
@k141303
Copy link
Collaborator

k141303 commented Jan 14, 2025

@namgiH ありがとうございます。

バージョン問題の件

自分の手元でもエラーが再現しました。
今後vllm側に修正が入った場合、以下の対応だと生合成が取れなくなる可能性も考えられます。

+ RUN pip install --no-cache-dir vllm
- RUN pip install --no-cache-dir vllm nvidia-ml-py && \
-     pip uninstall --yes pynvml && \
-     pip install -U --no-cache-dir opencv-python-headless==4.5.5.62

vllmのバージョンを0.6.5にすることで回避できるようなので、この方向で別途プルリクを立てて対処します。

--runtime=nvidiaの件

おっしゃる通りです。
READMEを修正します。

チャットテンプレートの件

確かに、chat_templateの指定が無いモデルを使用した場合はエラーが出ますが、この場合、defaultのchat_templateを使用することが良いとも限らないので、現状のままで良いかと考えます。

バッチ処理の件

いえ、文字列の長さが4096以上になるのでそこでエラーになります。

失礼しました。こちらvllmへのデータの渡し方に実装ミスがありました。
こちらも別途プルリクを立てて対処します。

@k141303 k141303 closed this Jan 14, 2025
@namgiH
Copy link
Author

namgiH commented Jan 14, 2025

コメントいただきありがとうございました。
確認いたしました。

一点だけ、チャットテンプレートの件に関しましては、
今のコードを修正しないまま llm-jp-3-13b またはそれをベースにしたものを
chat template の指定なしで使うとエラーになりますので、
これに対する案内をREADMEに書いておくべきかと思いました。

他はおっしゃる通りの対応で問題ないと思います。
対応していただきありがとうございました。

@k141303 k141303 mentioned this pull request Jan 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants