• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Generative AI / LLMs

    NVIDIA TensorRT-LLM?? LoRA LLM ?? ? ??

    Reading Time: 10 minutes

    ?? ?? ??(LLM)? ??? ?? ???? ???? ??? ?? ? ??? ?? ???? ??? ???? ???? ???? ??? ??(NLP)? ??????.?????LLM? ????? ?? ???? ????, ??? ?? ??? ?? ????? ???????? ??? ??? ????.??? LLM? ????? ???? ??? ?? ?????? ????, ?? ???? ????? ??? ? ????.

    ??? ??? ?? ?? ??? ???? ?? LLM? ??? ??? ? ????? ??? ??? ? ??? LoRA(Low-Rank Adaptation)???. ??? NLP ?? ? ????? ?? ???? ?? ????? ? ?? ??? ????? ?? ??? ?? ??? ?, ??? ?? ?? ? ?? ??? ?? ?? ? ?? ?? ?? ?????.

    ? ?????? LoRA? ?? ??? ??? ?? ???? ? ?? ?????? ? ??? ?????.??? LoRA? ?? ?? ?? ? ???? ?????? ???? ??? ??? ??? ?????.?LoRA ?? ??? ?? ? ??? ?? ???? ??? ???? ?????.???????NVIDIA TensorRT-LLM? ???? NVIDIA GPU?? LoRA ??? ??? ????? ??? ?????.

    ???? ?? ??

    ? ????? ??? ????? LLM ?? ? ?? ?????? ?? ?? ??? ??? ?? ??? ?????.

    LoRA? ??????

    LoRA? LLM ????? ? ??? ??? ??? ???? ??? ??? ????? ?? LLM ???? ?? ??? ???? ?? ?? ?????.?NVIDIA NeMo?? ???? LLM ??? ?? ? ?????(?? 1).

    ?? 1. LoRA? NVIDIA NeMo?? ???? LLM ??? ?? ? ?? ? ?????.

    LLM? ????? ?? ?????? ?? ???? ?? ??? ???? ?? ???? ??? ??? ????.??? ???? ??????? ?? ?? ??(SFT)?? ??? ?? ??? ????.??? ??? ??? ????? ??? ?????? ??(???? ?????? ?? ??, SFT? ?? ??) ? ?? ???? ???? ???.?

    LoRA ??? ?? ?? ??? ?? ??(PEFT)??? ?? ???? ? ?????. ??? ??? ???? ?? ??????. ???? ?????? ?? ? ?? ?? ???? ??? ??? ??? ???? ?? ????. ??? ??? ?? LLM? ???? ?? ????? ??? ?? ?? ?? ??? ????? ????. 

    PEFT? ? ?? ???? ?? ???? ????? SFT? ???? ???? ???? ??? ???????. ?? ?? ??? ?? LoRA?? ? ?? ??? ????. ? ?? ??? ? ? ??? ? ??? ???? ???? ?? ? ??? ??? ?????. ?? ????? ??? ???? ?? ?? ??? LoRA ??? ????? ????, ??? ?? ??? ??? ???? ?? ??? LLM? ??? ??? ??? ? ??? ?????. 

    ?????, LLM? ? ???? ???? ??? ??? ??? ??? ????? ???? ??? ??? ??? ?????.?LoRA: Low-Rank Adaptation of Large Language Models?? ? ? ???, ????? LoRA? ???? ?? ? ???? ?? ?? ?? ??? ???? ???? ? ?? ??? ?????.

    LoRA ??? ??

    LoRA ??? ??? ??? ??? ???? ???. ??? ??? ? ?? ? ??? ??? ??? ??? ???? ???? ?????. ?? ??? ???? ???? ???? ? ?? ?? ????. ??? ??? ?? ?? ???? ???? ?? ? ???? ??? ? ????.

    LoRA? ????? ?? ?? ??? ?? LLM? ??? ??? ??? ??? ?????.??? ?? LLM? ??? ??? 1,024?? ?? ??? 50,000? ?? ?? ??? ??W??? 1024 x 50,000 = 51,200,000?? ?? ??? ????.?

    LoRA? ? ??? W? ?? ? ?? ??? 1024 x r ??? A ??? r x 50,000 ??? B ??? ?????. ??? r?(?) ?? ??? ???? ??? ?? ?????. ? ? ??? ?? ?? ??? ??? ??? ?? ??? 1024 x r + r x 50,000 = 51,200,000~50,000 x (1024 – r)????. 

    ??? ?? ?? r?(?) ???? ???? ? ?? ?????. ? ?? r?(?) ???? ?? ?? ??? ???? ???? ? ?? ??? ??? ? ????. ??? r?(?) ??? ??? ???? ???? ??? ??? ????? ??? ? ????. r?(?) ??? ???? ??? ? ????. ??? ??? ?? ?? ?? ? ???? ?? ???? ??? ??? ??? ???? ?? ?????.

    LoRA? ??? ??? ??? LLM? ? ??? ???? ?? ??? ??? ?????.??? ??? ??? ?? ??? LLM ???? ????? ?? ?? ?????? ????.???? ??? ???? ????? ?? ?? ?????? ??? ?? ?????.??? LoRA? ?? ??? ??? ??? ?? ?? ???? ???? ??? ??????.

    ?? 2. LLM ?? W? 2?? ??? ?? A? B? ??

    ?? LoRA ??

    LLM? ??? ?? ? ?? ??? ?? ?? ?? ?? ??? ??? ????? ???? ???? ?????. ?? ?? Llama 2? ?? ?? ?? LLM?? ?? ?? ????? LoRA ?? ??? ?? ? ?? ? ????. ? ?? ?? ???? ?? ??? ????? ???? ?? ?? ??? ??? ???? ???. LoRA ??? ??? ?? ?? ??? LoRA ??? ? ??? ?? ??? ?? A ? B? ?? ???? ??? ? ?? ??? ??? ?? ??? ?????. ??? ???? ?? ?? LLM? ???? ???? ???? GPU ??? ?? ??? ????? ??? ? ????.

    LoRA ??

    LoRA ??? ???? ????? ???? ???? ???? ?? ??? ?? ?????? ???? ???.?????? ??? ?? ??? ???? ??? ??, ?? ?? ??? ?? ????? ?????.???? ??? ?? ??? ????.

    {
            "taskname": "squad",
            "prompt_template": "<|VIRTUAL_PROMPT_0|> Context: {context}\n\nQuestion: {question}\n\nAnswer:{answer}",
            "total_virtual_tokens": 10,
            "virtual_token_splits": [10],
            "truncate_field": "context",
            "answer_only_loss": True,
            "answer_field": "answer",
    }

    ????? ?? ???? 10?? ?? ??? ?? ???? ???, ? ?? ????, ??, ??? ?????. ?? ??? JSON ??? ?? ??? ? ???? ???? ???? ??? ?? ??? ?????. 

    LLM? ????? ? ??? ? ?? ?? ???? ????.?NVIDIA NeMo????Hugging Face PEFT? ?? ??? ??? ? ????.?NeMo? ???? PubMed ??????? LoRA? ???? ??? ????Llama 2? ??? NeMo ????? PEFT? ?????.?

    ? ?????? Hugging Face? ?? ??? LLM? ????? ??? ??? ????.

    LoRA ??

    TensorRT-LLM?? LoRA ?? LLM? ?????? ????? ???? ?? ??? ?? ?? ????? ???? ???. ? ??????? Llama 2 13B ? Llama 2 7B? ?? ??? ????, Hugging Face?? ??? ? ?? ?? LoRA ?? ??? ?????.

    ? ?? ??? ? ????? ??? ? ?? ????? ???? ?? ??? ????? ???? ???? ?? ???? ????. ?? ?? ???? Triton ?? ??? ?? ??? ?? ??? ????????.

    ?????? TensorRT-LLM?? ?? ???? ????. ??? ???? Triton? ??? ? ??? ?? ??? ?? ??? ????? ??? ??? ?? ??? ? ??? ???. 

    TensorRT-LLM ?? ? ??

    ???NVIDIA/TensorRT-LLM??????? ?? ? ?????.?TensorRT-LLM? ???? ?? ???? ???? ?? ?? ??? ??? Dockerfile? ???? ????.???? ??? ?? ????? ???? ???? ??? TensorRT-LLM? ??? ?? ???? ?????.??? ?? ????? TensorRT-LLM ??? ???? ?????.

    git lfs install
    git clone https://github.com/NVIDIA/TensorRT-LLM.git
    cd TensorRT-LLM
    git submodule update --init --recursive
    make -C docker release_build

    ?? ??? ????

    Hugging Face?? ?? ?? ? LoRA ??? ???????.

    git-lfs clone https://huggingface.co/meta-llama/Llama-2-13b-hf
    git-lfs clone https://huggingface.co/hfl/chinese-llama-2-lora-13b

    ?? ???

    ??? ?????--use_lora_plugin???--hf_lora_dir? ?????.?LoRA? ????lm_head?? ???? ?? ??, ?? ?? ????lm_head?? ???? ?????.

    python convert_checkpoint.py --model_dir /tmp/llama-v2-13b-hf \
                             --output_dir ./tllm_checkpoint_2gpu_lora \
                             --dtype float16 \
                             --tp_size 2 \
                             --hf_lora_dir /tmp/chinese-llama-2-lora-13b
                              
    trtllm-build --checkpoint_dir ./tllm_checkpoint_2gpu_lora \
                --output_dir /tmp/new_lora_13b/trt_engines/fp16/2-gpu/ \
                --gpt_attention_plugin float16 \
                --gemm_plugin float16 \
                --lora_plugin float16 \
                --max_batch_size 1 \
                --max_input_len 512 \
                --max_output_len 50 \
                --use_fused_mlp

    ?? ??

    ?? ?? ??? ??????lora_dir???? ??? ?????.?LoRA ?? ??? ?? ??? ? ??? LoRA ?????? ???? ???.

    mpirun -n 2 python ../run.py --engine_dir "/tmp/new_lora_13b/trt_engines/fp16/2-gpu/" \
                  --max_output_len 50 \
                  --tokenizer_dir "chinese-llama-2-lora-13b/" \
                  --input_text "今天天氣很好,我到公園的時后," \
                  --lora_dir "chinese-llama-2-lora-13b/" \
                  --lora_task_uids 0 \
                  --no_add_special_tokens \
                  --use_py_session
     
     Input: "今天天氣很好,我到公園的時后,"
    Output: "發現公園里人很多,有的在打羽毛球,有的在打乒乓球,有的在跳繩,還有的在跑步。我和媽媽來到一個空地上,我和媽媽一起跳繩,我跳了1"

    ?? ???? ???? LoRA ?? ??? ???? ?? ??? ? ????.?LoRa? ?? ??? ?? ??? ??? ?? ??????–lora_task_uids-1? ???? UID? -1? ????? ?? ???.?? ?? ??? LoRA ??? ???? ??? ?? ???? ???? ???.

    mpirun -n 2 python ../run.py --engine_dir "/tmp/new_lora_13b/trt_engines/fp16/2-gpu/" \
                  --max_output_len 50 \
                  --tokenizer_dir "chinese-llama-2-lora-13b/" \
                  --input_text "今天天氣很好,我到公園的時后," \
                  --lora_dir "chinese-llama-2-lora-13b/" \
                  --lora_task_uids -1 \
                  --no_add_special_tokens \
                  --use_py_session
     
     Input: "今天天氣很好,我到公園的時后,"
    Output: "我看見一個人坐在那邊邊看書書,我看起來還挺像你,可是我走過過去問了一下他說你是你嗎,他說沒有,然后我就說你看我看看你像你,他說說你看我像你,我說你是你,他說你是你,"

    ?? LoRA ?? ??? ?? ?? ?? 

    ?? TensorRT-LLM? ?? LoRA ?? ??? ?? ?? ??? ??? ????? ?????.????? ? ?? LoRA ?????? ?? ?? ?????.?? ?????? LoRA ????r???? 8???, LoRA ????? ??? ?? ??? ??? ???--max_lora_rank? 8? ?? ? ????.

    ? ????? ??? ????? luotuo-lora-7b-0.1?? ?? ??? LoRA ?????? ??? ????? Japanese-Alpaca-LoRA-7b-v0?? ?? ??? LoRA ?????? ?????.?TensorRT-LLM? ?? ?????? ????? ????--lora_dir "luotuo-lora-7b-0.1/"?"Japanese-Alpaca-LoRA-7b-v0/"? ?? ?? LoRA ?????? ????? ?????.?TensorRT-LLM? ??? ???????lora_task_uid? ?????.?lora_task_uids -1? ?? ??? ???? ?? ??? ????.??? ???lora_task_uids 0 1? ???? ? ?? ???? ? ?? LoRA ?????? ???? ? ?? ???? ? ?? LoRA ?????? ?????.

    ???? ???? ?? ??? ??? ?? 美國的首都在哪里? \n答案:? 3? ????, ? ??? ??? ??? アメリカ合衆國の首都はどこですか? \n答え:? 3? ?????.?(? ??? ?? “??? ??? ?????? \n??”? ?????.)??? ?? ?? ??? luotuo-lora-7b-0.1 ? Japanese-Alpaca-LoRA-7b-v0?? ?? ?????.

    git-lfs clone https://huggingface.co/qychen/luotuo-lora-7b-0.1
    git-lfs clone https://huggingface.co/kunishou/Japanese-Alpaca-LoRA-7b-v0
    BASE_LLAMA_MODEL=llama-7b-hf/
     
    python convert_checkpoint.py --model_dir ${BASE_LLAMA_MODEL} \
                                --output_dir ./tllm_checkpoint_1gpu_lora_rank \
                                --dtype float16 \
                                --hf_lora_dir /tmp/Japanese-Alpaca-LoRA-7b-v0 \
                                --max_lora_rank 8 \
                                --lora_target_modules "attn_q" "attn_k" "attn_v"
     
    trtllm-build --checkpoint_dir ./tllm_checkpoint_1gpu_lora_rank \
                --output_dir /tmp/llama_7b_with_lora_qkv/trt_engines/fp16/1-gpu/ \
                --gpt_attention_plugin float16 \
                --gemm_plugin float16 \
                --lora_plugin float16 \
                --max_batch_size 1 \
                --max_input_len 512 \
                --max_output_len 50
     
    python ../run.py --engine_dir "/tmp/llama_7b_with_lora_qkv/trt_engines/fp16/1-gpu/" \
                  --max_output_len 10 \
                  --tokenizer_dir ${BASE_LLAMA_MODEL} \
                  --input_text "美國的首都在哪里? \n答案:" "美國的首都在哪里? \n答案:" "美國的首都在哪里? \n答案:" "アメリカ合衆國の首都はどこですか? \n答え:" "アメリカ合衆國の首都はどこですか? \n答え:" "アメリカ合衆國の首都はどこですか? \n答え:" \
                  --lora_dir  "luotuo-lora-7b-0.1/" "Japanese-Alpaca-LoRA-7b-v0/" \
                  --lora_task_uids -1 0 1 -1 0 1 \
                  --use_py_session --top_p 0.5 --top_k 0

    ??? ??? ????.

    Input [Text 0]: "<s> 美國的首都在哪里? \n答案:"
    Output [Text 0 Beam 0]: "Washington, D.C.
    What is the"
     
    Input [Text 1]: "<s> 美國的首都在哪里? \n答案:"
    Output [Text 1 Beam 0]: "華盛頓。
    "
     
    Input [Text 2]: "<s> 美國的首都在哪里? \n答案:"
    Output [Text 2 Beam 0]: "Washington D.C.'''''"
     
    Input [Text 3]: "<s> アメリカ合衆國の首都はどこですか? \n答え:"
    Output [Text 3 Beam 0]: "Washington, D.C.
    Which of"
     
    Input [Text 4]: "<s> アメリカ合衆國の首都はどこですか? \n答え:"
    Output [Text 4 Beam 0]: "華盛頓。
    "
     
    Input [Text 5]: "<s> アメリカ合衆國の首都はどこですか? \n答え:"
    Output [Text 5 Beam 0]: "ワシントン D.C."

    luotuo-lora-7b-0.1? ? ?? ??? ?? ?? ??(???)?? ??? ?????. Japanese-Alpaca-LoRA-7b-v0? ?? ?? ??(???)?? ??? ?????.

    ?? ?? ??: LoRA ?? ? ??? ?? ??? ??? ??? ?? logit GEMM? ??? ??, ???? ??? ?? ????? ?? ??? ??? ??? ??? ?? logit GEMM? ??? ? ??? ???? ???.

    Triton ? ????? ?? ??? ?? LoRA ?? ?? ??

    ? ????? Triton ?? ???? ?? ?? ??? ???? LoRA ?? ??? ???? ??? ?????.?Triton ?? ?? ?? ? ??? ?? ???? ????NVIDIA TensorRT-LLM ? NVIDIA Triton? ??? AI ?? ??? ??? ?????.

    ??? ?????, ?? LoRA? ???? ??? ??????. ???? ?? ?? Llama 2 7B? ??????.

    BASE_MODEL=llama-7b-hf
     
    python3 tensorrt_llm/examples/llama/build.py --model_dir ${BASE_MODEL} \
                    --dtype float16 \
                    --remove_input_padding \
                    --use_gpt_attention_plugin float16 \
                    --enable_context_fmha \
                    --use_gemm_plugin float16 \
                    --output_dir "/tmp/llama_7b_with_lora_qkv/trt_engines/fp16/1-gpu/" \
                    --max_batch_size 128 \
                    --max_input_len 512 \
                    --max_output_len 50 \
                    --use_lora_plugin float16 \
                    --lora_target_modules "attn_q" "attn_k" "attn_v" \
                    --use_inflight_batching \
                    --paged_kv_cache \
                    --max_lora_rank 8 \
                    --world_size 1 --tp_size 1

    ????, ? ??? ?? Triton? ??? LoRA ??? ?????.

    git-lfs clone https://huggingface.co/qychen/luotuo-lora-7b-0.1
    git-lfs clone https://huggingface.co/kunishou/Japanese-Alpaca-LoRA-7b-v0
     
    python3 tensorrt_llm/examples/hf_lora_convert.py -i Japanese-Alpaca-LoRA-7b-v0 -o Japanese-Alpaca-LoRA-7b-v0-weights --storage-type float16
    python3 tensorrt_llm/examples/hf_lora_convert.py -i luotuo-lora-7b-0.1 -o luotuo-lora-7b-0.1-weights --storage-type float16

    ?? ?? Triton ?? ?????? ??? ?? ??? ?? Triton ??? ?????.

    ????? ??????? ?? ?? ??? ???? ?? LoRA ??? ?????.?????? ??? ??? ??? ?? LoRA? ???? ?? ??? ?????.

    INPUT_TEXT=("美國的首都在哪里? \n答案:" "美國的首都在哪里? \n答案:" "美國的首都在哪里? \n答案:" "アメリカ合衆國の首都はどこですか? \n答え:" "アメリカ合衆國の首都はどこですか? \n答え:" "アメリカ合衆國の首都はどこですか? \n答え:")
    LORA_PATHS=("" "luotuo-lora-7b-0.1-weights" "Japanese-Alpaca-LoRA-7b-v0-weights" "" "luotuo-lora-7b-0.1-weights" "Japanese-Alpaca-LoRA-7b-v0-weights")
     
    for index in ${!INPUT_TEXT[@]}; do
        text=${INPUT_TEXT[$index]}
        lora_path=${LORA_PATHS[$index]}
        lora_arg=""
        if [ "${lora_path}" != "" ]; then
            lora_arg="--lora-path ${lora_path}"
        fi
     
        python3 inflight_batcher_llm/client/inflight_batcher_llm_client.py \
            --top-k 0 \
            --top-p 0.5 \
            --request-output-len 10 \
            --text "${text}" \
            --tokenizer-dir /home/scratch.trt_llm_data/llm-models/llama-models/llama-7b-hf \
            ${lora_arg} &
    done
     
    wait

    ?? ??? ??? ????.

    Input sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901]
    Input sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 139, 29901]
    Input sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 139, 29901]
    Input sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901]
    Input sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901]
    Input sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 139, 29901]
    Got completed request
    Input: アメリカ合衆國の首都はどこですか? \n答え:
    Output beam 0: ワシントン D.C.
    Output sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901, 29871, 31028, 30373, 30203, 30279, 30203, 360, 29889, 29907, 29889]
    Got completed request
    Input: 美國的首都在哪里? \n答案:
    Output beam 0: Washington, D.C.
    What is the
    Output sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 139, 29901, 7660, 29892, 360, 29889, 29907, 29889, 13, 5618, 338, 278]
    Got completed request
    Input: 美國的首都在哪里? \n答案:
    Output beam 0: Washington D.C.
    Washington D.
    Output sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 139, 29901, 7660, 360, 29889, 29907, 29889, 13, 29956, 7321, 360, 29889]
    Got completed request
    Input: アメリカ合衆國の首都はどこですか? \n答え:
    Output beam 0: Washington, D.C.
    Which of
    Output sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901, 7660, 29892, 360, 29889, 29907, 29889, 13, 8809, 436, 310]
    Got completed request
    Input: アメリカ合衆國の首都はどこですか? \n答え:
    Output beam 0: Washington D.C.
    1. ア
    Output sequence:  [1, 29871, 30310, 30604, 30303, 30439, 30733, 235, 164, 137, 30356, 30199, 31688, 30769, 30449, 31250, 30589, 30499, 30427, 30412, 29973, 320, 29876, 234, 176, 151, 30914, 29901, 7660, 360, 29889, 29907, 29889, 13, 29896, 29889, 29871, 30310]
    Got completed request
    Input: 美國的首都在哪里? \n答案:
    Output beam 0: 華盛頓
    W
    Output sequence:  [1, 29871, 30630, 30356, 30210, 31688, 30769, 30505, 232, 150, 173, 30755, 29973, 320, 29876, 234, 176, 151, 233, 164, 1

    ??

    ?? ?? ?? LLM ????? ?? ?? ??? ?? TensorRT-LLM? ???? ??? ?? LLM? ?? ??, ?? ? ???? ? ????. NVIDIA TensorRT-LLM? NVIDIA Triton ?? ??? ?? LLM? ????? ???, ?? ? ???? ? ???? ??? ?????. LoRA ?? ?? ??? ?? TensorRT-LLM? ??? LLM? ????? ???? ??? ? ?? ??? ?? ?????.

    ??????NVIDIA/TensorRT-LLM??? ?? ?????? ???? ? ???? ?????? LLM?? ??? ???.?NVIDIA NeMo? ???? ?? LLM? ??? ? ????. ?? ???NeMo Framework PEFT with Llama 2? ?????.??????NeMo ????? ?? ????? ???? ??? ?? ????.

    ?? ???

    Discuss (0)
    +1

    Tags

    人人超碰97caoporen国产