1pip install hf_transfer
2HF_HUB_ENABLE_HF_TRANSFER=1 hf download weblab-LLM-M/Weblab-MedLLM-Qwen3-235B-Thinking \
3 --local-dir ./Weblab-MedLLM-Qwen3-235B-Thinking
大規模モデルの推論効率化のため、vLLMの使用を推奨します。vLLMのインストールおよび使用方法については
vLLM公式ドキュメント を参照してください。
1# 1. Miniconda3のインストール
2wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
3bash Miniconda3-latest-Linux-x86_64.sh -b
4~/miniconda3/bin/conda init bash
5source ~/.bashrc
6
7# 2. conda環境の作成(CUDA 12.8、Python 3.12)
8conda create --prefix $HOME/envs/vllm_cu128 python=3.12 -y
9conda activate $HOME/envs/vllm_cu128
10conda install -c nvidia cuda-toolkit=12.8 -y
11
12# 3. vLLMのインストール(PyTorch 2.9.1+cu128 も依存として自動インストール)
13pip install vllm==0.15.1
14
15# 4. FlashInferのアップグレード
16pip install flashinfer-python==0.6.3
17
18# 5. NCCLのアップグレード(B200 Blackwellの場合のみ必要)
19pip install nvidia-nccl-cu12==2.29.3 --no-deps
20
21# 6. CUDAシンボリックリンクの設定(FlashInfer JITコンパイル用)
22mkdir -p $HOME/envs/vllm_cu128/lib64/stubs
23ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so $HOME/envs/vllm_cu128/lib64/libcuda.so
24ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so.1 $HOME/envs/vllm_cu128/lib64/libcuda.so.1
1export NCCL_NVLS_ENABLE=0 # NVLink SHARP無効化(ncclCommInitRankハング対策)
2export VLLM_ALLREDUCE_USE_SYMM_MEM=0 # torch symmetric memory無効化
3export VLLM_USE_NCCL_SYMM_MEM=0 # NCCL symmetric memory allocator無効化
4export CUDA_HOME=$CONDA_PREFIX # FlashInfer JITコンパイル用
1conda activate $HOME/envs/vllm_cu128
2
3vllm serve ./Weblab-MedLLM-Qwen3-235B-Thinking \
4 --host 0.0.0.0 \
5 --port 8000 \
6 --served-model-name Weblab-MedLLM-Qwen3-235B-Thinking \
7 --tensor-parallel-size 8 \
8 --pipeline-parallel-size 1 \
9 --dtype bfloat16 \
10 --gpu-memory-utilization 0.93 \
11 --max-model-len 262144 \
12 --disable-custom-all-reduce \
13 --trust-remote-code \
14 --enable-chunked-prefill \
15 --enable-prefix-caching \
16 --max-num-batched-tokens 32768 \
17 --max-num-seqs 60 \
18 --generation-config vllm \
19 --enable-expert-parallel
1from openai import OpenAI
2
3client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy") # 認証なしの場合は任意の文字列
4
5response = client.chat.completions.create(
6 model="Weblab-MedLLM-Qwen3-235B-Thinking",
7 messages=[
8 {"role": "system", "content": "あなたは医療の専門知識を持つアシスタントです。"},
9 {"role": "user", "content": "脳梗塞の急性期治療において、rt-PA静注療法の適応基準について説明してください。"}
10 ],
11 max_tokens=1024*4,
12)
13print(response.choices[0].message.content)
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_name = "./Weblab-MedLLM-Qwen3-235B-Thinking" # ダウンロード先のローカルパスを指定
4
5model = AutoModelForCausalLM.from_pretrained(
6 model_name,
7 torch_dtype="auto",
8 device_map="auto"
9)
10tokenizer = AutoTokenizer.from_pretrained(model_name)
11
12prompt = "脳梗塞の急性期治療において、rt-PA静注療法の適応基準について説明してください。"
13
14messages = [
15 {"role": "system", "content": "あなたは医療の専門知識を持つアシスタントです。"},
16 {"role": "user", "content": prompt}
17]
18
19text = tokenizer.apply_chat_template(
20 messages,
21 tokenize=False,
22 add_generation_prompt=True
23)
24model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
25
26generated_ids = model.generate(
27 **model_inputs,
28 max_new_tokens=1024*4,
29)
30generated_ids = [
31 output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
32]
33
34response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
35print(response)