当前位置: 首页 > news >正文

RTX-3090 Qwen3-8B Dify RAG环境搭建

RTX-3090 Qwen3-8B Dify RAG环境搭建

    • 一、环境配置
    • 二、操作步骤
      • 1、创建容器
      • 2、下载`Qwen3-8B`和embedding模型
      • 3、安装`transformers`
      • 4、安装`vllm`
      • 5、安装`flash-attention`
      • 6、启动兼容OpenAI API的服务
        • 1、方案一:启动`vllm`服务【不支持多任务】
        • 2、方案二:Flask和PyTorch实现的Qwen3-8B和Embeddings 兼容OpenAI API的服务
      • 7、测试API服务
      • 8.安装`Dify`

一、环境配置

属性
CUDA Driver Version555.42.02
CUDA Version12.5
OSUbuntu 20.04.6 LTS
Docker version24.0.5, build 24.0.5-0ubuntu1~20.04.1
GPUNVIDIA GeForce RTX 3090 24GB显存

二、操作步骤

1、创建容器

docker run --runtime nvidia --gpus all -ti \-v $PWD:/home -w /home \-p 8000:8000 --ipc=host nvcr.io/nvidia/pytorch:24.03-py3 bash

2、下载Qwen3-8B和embedding模型

cd /home
pip install modelscope
modelscope download --model Qwen/Qwen3-8B  --local_dir Qwen3-8B
modelscope download --model maidalun/bce-embedding-base_v1 --local_dir bce-embedding-base_v1

3、安装transformers

cd /home
git clone https://github.com/huggingface/transformers.git
cd transformers
git checkout v4.51.0
pip install tokenizers==0.21
python3 setup.py install

4、安装vllm

pip install vllm
pip install flashinfer-python==v0.2.2
python3 -m pip install --upgrade 'optree>=0.13.0'
pip install bitsandbytes>=0.45.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

5、安装flash-attention

git clone https://github.com/Dao-AILab/flash-attention.git
cd flash-attention/
git checkout fd2fc9d85c8e54e5c20436465bca709bc1a6c5a1
python setup.py build_ext
python setup.py bdist_wheel
pip install dist/flash_attn-*.whl

6、启动兼容OpenAI API的服务

1、方案一:启动vllm服务【不支持多任务】
cd /home
export TORCH_CUDA_ARCH_LIST="8.6+PTX"
vllm serve ./Qwen3-8B/ --quantization bitsandbytes --enable-prefix-caching --dtype bfloat16
2、方案二:Flask和PyTorch实现的Qwen3-8B和Embeddings 兼容OpenAI API的服务
cat > dify_api_srv.py <<-'EOF'
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
import torch
from transformers import AutoModel
from typing import List
import numpy as np
from transformers import TextStreamer
from flask import Flask, request, jsonify, Response
import uuid
import jsonapp = Flask(__name__)# 加载模型和分词器
model_name = "./Qwen3-8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto"
)# 加载本地嵌入模型
MODEL_PATH = "./bce-embedding-base_v1"  # 本地模型路径
rerank_tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
rerank_model = AutoModel.from_pretrained(MODEL_PATH)@app.route('/v1/completions', methods=['POST'])
def handle_completion():"""处理文本补全请求"""data = request.get_json()print(data)# 解析请求参数prompt = data.get('prompt', '')max_tokens = data.get('max_tokens', 32768)temperature = float(data.get('temperature', 1.0))top_p = float(data.get('top_p', 1.0))# 构建模型输入messages = [{"role": "user", "content": prompt}]formatted_text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True,enable_thinking=False)inputs = tokenizer(formatted_text, return_tensors="pt").to(model.device)# 生成文本generated_ids = model.generate(**inputs,max_new_tokens=max_tokens,temperature=temperature,do_sample=False,top_p=top_p,pad_token_id=tokenizer.eos_token_id)# 解析生成结果output_ids = generated_ids[0][len(inputs.input_ids[0]):]try:think_token_id = tokenizer.convert_tokens_to_ids("</think>")index = len(output_ids
http://www.xdnf.cn/news/275797.html

相关文章:

  • (即插即用模块-Attention部分) 六十四、(2024) LSKA 可分离大核注意力
  • ubuntu-PyQt5安装+PyCharm配置QtDesigner + QtUIC
  • 关于离散化算法的看法与感悟
  • 软考-软件设计师中级备考 8、进程管理
  • 49认知干货:产品的生命周期及类型汇总
  • 【Java项目脚手架系列】第一篇:Maven基础项目脚手架
  • Rust的安全卫生原则
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.2 多表关联技术(INNER JOIN/LEFT JOIN/FULL JOIN)
  • C++八股--6--mysql 日志与并发控制
  • WSL在D盘安装Ubuntu
  • 纯文本Text转Html网页转换器
  • 方案精读:110页华为云数据中心解决方案技术方案【附全文阅读】
  • 项目收尾管理
  • 时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解
  • C盘莫名其妙一直变大
  • 智能工厂边缘计算:从数据采集到实时决策
  • WPF之尺寸属性层次
  • 如何从GitHub上调研优秀的开源项目,并魔改应用于工作中?
  • 【言语理解】中心理解题目之选项分析
  • Unity与Unreal Engine(UE)的深度解析及高级用法
  • 【AI面试准备】模型自动化评估经验
  • MCP协议与Dify集成教程
  • 华中科技大学系统结构慕课部分答案
  • 33.降速提高EMC能力
  • 深度学习中的数据增强:提升食物图像分类模型性能的关键策略
  • 【自存】python使用matplotlib正常显示中文、负号
  • Android ART运行时无缝替换Dalvik虚拟机的过程分析
  • Android运行时ART加载OAT文件的过程
  • 跨学科项目式学习的AI脚手架设计:理论框架与实践路径研究
  • 从头训练小模型: 4 lora 微调