火山引擎云服务器实践教程-构建基于RAG with Intel® TDX的系统环境进行文本生成推理

axin 2025-04-04 6人围观 ,发现0个评论 火山引擎云服务器云服务器云服务器教程

👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>

本文主要介绍在支持Intel®TDX能力的实例中构建RAG框架并部署推理模型的方案。本方案不仅可以通过TDX为推理数据提供基于硬件级别的可信机密环境,还能通过RAG丰富推理模型的回答内容。

背景信息

Intel® TDX

Intel® Trust Domain Extensions (Intel® TDX,英特尔® 信任域扩展),是英特尔推出的一项用于增强虚拟机环境安全性的技术。TDX利用硬件特性,在物理硬件层面为虚拟机创建独立的可信执行环境,为虚拟机提供更高级别的安全保护,确保敏感数据和关键应用在复杂的云计算环境中免受潜在的安全威胁。了解更多。

RAG

Retrieval-Augmented Generation(RAG,检索增强生成)是一种将信息检索文本生成相结合的技术,可用于提升生成式AI模型(例如大型语言模型LLM)的准确性和可靠性,减少模型幻觉。
  • 信息检索:在生成答案前,RAG会利用检索系统,从大量的文本数据(例如本地文档、互联网、企业数据库等)中查找与输入的问题或提示相关的信息。

  • 文本生成:在获取到相关检索结果后,RAG会将检索到的文档片段与用户问题结合输入生成式AI模型(例如大型语言模型LLM),模型会将这些检索到的信息作为额外的上下文信息,与输入的问题或提示一起进行处理,然后生成相应的回答或内容。

Llama-2-7b-chat-hf模型

Llama 2是Meta公司开源的一个预训练和微调的生成文本模型集合。本实践选用了该模型集合中针对对话任务进行优化的Llama-2-7b-chat-hf模型,该模型通过监督微调(SFT)和人类反馈强化学习(RLHF)提升安全性和对话流畅性,适用于客服聊天机器人、虚拟助手等交互场景。更多详情可查看meta-llama/Llama-2-7b-chat-hf。

操作步骤

步骤一:环境准备

  1. 创建支持Intel® TDX能力的云服务器实例。操作详情可查看购买云服务器。

创建实例时,请注意以下配置:
    • 实例规格:本文选择安全增强通用型g3ilt(ecs.g3ilt.8xlarge)规格。

    • 云盘:推荐系统盘容量不低于100GiB。

    • 镜像:本文选择Ubuntu 24.04 64位。

    • 网络:需要绑定公网IP,操作详情可查看绑定公网IP。

  1. 修改安全组配置。

与推理模型间的通讯需要使用8502端口,需要在云服务器实例关联的安全组入方向中放通此端口。
    1. 登录实例控制台。

    1. 在顶部导航栏选择目标实例所在地域与项目。

    1. 单击目标实例名称进入详情页。

    1. 选择“安全组”页签。

    1. 单击“配置规则”按钮。

    1. 参考下图新增“入方向”规则,单击“确定”按钮完成操作。

  1. 为目标实例安装依赖工具、软件。

    1. 登录目标实例。

    1. 执行如下命令,更新APT软件源。

apt update
    1. 执行如下命令,安装依赖的工具、软件。

apt install docker.io git cryptsetup -y
    1. 执行如下命令,下载confidential-computing-zoo代码。

git clone https://github.com/intel/confidential-computing-zoo.git
说明
若您的实例无法访问Git,也可以下载confidential-computing-zoo后上传至目标实例。上传后,请执行unzip confidential-computing-zoo-main.zip命令解压,再执行mv confidential-computing-zoo-main confidential-computing-zoo命令修改目录名称名称。
  1. (可选)创建镜像代理。

说明
本实践通过火山引擎提供的镜像仓库服务,通过远端代理仓的方案,提升跨境拉取镜像效率。若您可以通过其他方式跨境拉取Docker镜像,可跳过本步骤。
    1. 登录镜像仓库控制台。

    1. 在左侧目录树选择“实例列表 > 远端代理”。

    1. 选择创建“小微版远端代理仓”。

    1. 单击“创建远端代理仓”按钮,配置如下信息。

说明
本实践仅说明必要的参数,未提及参数保持默认即可。完整说明请查看创建源端代理仓。
参数
说明
取值样例
域名
自定义代理仓的域名。本文配置为tdxdocker。
tdxdocker
计费类型
选择按量计费:后付费模式。可随开随停,按实际使用时长计费。计费详情参见产品计费
按量计费
规格
选择小微版
小微版
    1. 查看实例规格对比和配置费用,确认无误后,单击“确认订单”按钮。

    1. 仔细阅读并勾选“我已阅读并同意《镜像仓库专用服务条款》”,单击“确定”按钮提交订单,开始创建远端代理仓。

    1. 创建完成后,请记录该远端代理仓的访问域名。

    1. 单击您创建的代理仓名称进入详情页。

    1. 在左侧目录树选择“命名空间”。

    1. 单击“创建命名空间”按钮,配置如下信息。

说明
本实践仅说明必要的参数,未提及参数保持默认即可。完整说明请查看创建命名空间。
参数
说明
取值样例
名称
自定义命名空间的名称。本文配置为library。
library
默认仓库类型
设置该命名空间下制品仓库的默认为公有类型。
公有
    1. 单击“确定”按钮,完成操作。

步骤二:构建镜像

您可以根据实际情况,选择任意方式构建运行推理模型的Docker镜像。
说明
若您的云服务器实例无法访问Git,请使用火山引擎提供的Docker镜像。

步骤三:创建加密分区

  1. 登录目标实例。

  1. 执行如下命令,进入luks_tools目录。

cd /root/confidential-computing-zoo/cczoo/rag/luks_tools
  1. 执行如下命令,创建加密分区。

./create_encrypted_vfs.sh 50G /home/vfs
说明
本文创建的加密虚拟文件系统的大小为50 GB,并指定其挂载点为 /home/vfs,请按需调整。
  1. 输入YES,并按回车键确认。

  1. 输入访问加密分区的密码,并按回车键确认。

回显示例:
根据回显内容获取循环设备号,如下图LOOP_DEVICE=/dev/loop0。

  1. 执行如下命令,设置循环设备的环境变量。

export LOOP_DEVICE=/dev/loop0
说明
请将dev/loop0替换为实际循环设备号。
  1. 执行如下命令,创建用于存储加密数据的目录。

mkdir /home/encrypted_storage
  1. 执行如下命令,将块循环设备格式化为ext4。

./mount_encrypted_vfs.sh ${LOOP_DEVICE} format
  1. 根据指引输入访问加密分区的密码,按回车键确认。

回显示例:

步骤四:下载Llama-2-7b-chat-hf模型

  1. 获取下载授权。

    1. 访问Huggingface官方meta-llama/Llama-2-7b-chat-hf模型页面。

    1. 下划阅读模型使用许可协议,并填写所需信息,单击“Submit”按钮提交申请。

    1. 申请通过后,请登录HuggingFace Token页面,获取您有下载权限的Token。详情可查看User access tokens。

  1. 登录目标实例。

  1. 执行如下命令,进入加密分区。

cd /home/encrypted_storage
  1. 执行如下命令,安装HuggingFace下载工具。

pip install -U huggingface_hub --break-system-packages
  1. 执行如下命令,配置环境变量。

export HF_ENDPOINT=https://hf-mirror.com
说明
本文通过Hugging Face镜像站下载模型,您也可以前往Hugging Face官网进行下载。
  1. 下载模型文件。

    • 执行如下命令,下载Llama-2-7b-chat-hf模型。

huggingface-cli download --resume-download --local-dir-use-symlinks False meta-llama/Llama-2-7b-chat-hf --local-dir Llama-2-7b-chat-hf --token <your_token>
说明
请将命令中<your_token>替换为上一步获取的Token。
    • 执行如下命令,下载ms-marco-MiniLM-L-12-v2模型。

huggingface-cli download --resume-download --local-dir-use-symlinks False cross-encoder/ms-marco-MiniLM-L-12-v2 --local-dir ms-marco-MiniLM-L-12-v2
    • 执行如下命令,下载dpr-ctx_encoder-single-nq-base模型。

huggingface-cli download --resume-download --local-dir-use-symlinks False facebook/dpr-ctx_encoder-single-nq-base --local-dir dpr-ctx_encoder-single-nq-base
    • 执行如下命令,下载dpr-question_encoder-single-nq-base模型。

huggingface-cli download --resume-download --local-dir-use-symlinks False facebook/dpr-question_encoder-single-nq-base --local-dir dpr-question_encoder-single-nq-base

步骤五:配置数据库

  1. 登录目标实例。

  1. 执行如下命令,拉取MySQL数据库官方镜像。

docker pull <your_remote_proxy>/library/mysql
说明
  • 请将<your_remote_proxy>替换为远端代理仓访问域名。

  • 若您未使用火山引擎远端代理仓,请执行docker pull mysql命令拉取镜像。

  1. (可选)修改启动脚本。

若您使用了火山引擎提供的镜像仓库服务,通过远端代理仓的方案拉取Docker镜像,需按如下步骤调整代理配置。否则,请跳过本步骤。
    1. 执行如下命令,进入rag目录。

cd /root/confidential-computing-zoo/cczoo/rag
说明
请将 /root/confidential-computing-zoo/cczoo/rag替换为实际路径。
    1. 执行如下命令,打开启动脚本。

vim run.sh
    1. 按i键进入编辑模式,将mysql:latest修改为<your_remote_proxy>/library/mysql:latest。

说明
请将<your_remote_proxy>替换为远端代理仓访问域名。

    1. 按esc键退出编辑模式,输入:wq按回车键,保存并退出文件。

步骤六:运行Llama-2-7b-chat-hf模型

  1. 登录目标实例。

  1. 启动后端推理服务。

    1. 执行如下命令,进入rag目录。

cd /root/confidential-computing-zoo/cczoo/rag
说明
请将/root/confidential-computing-zoo/cczoo/rag替换为实际路径。
    1. 执行如下命令,启动推理后端服务。

./run.sh db && ./run.sh backend ra 127.0.0.1
    1. 输入127.0.0.1按回车键。

    1. 输入您配置的MySQL数据库登录用户及密码(默认用户名:root;默认登录密码 123456),按回车键确认。

  1. 启动推理前端服务。

    1. 请保留运行后端服务的终端,在浏览器中新建页面并再次登录目标实例。

    1. 在新终端中执行如下命令,进入rag目录。

cd /root/confidential-computing-zoo/cczoo/rag
    1. 在新终端中执行如下命令,启动推理前端服务。

./run.sh frontend ra 127.0.0.1
  1. 待前、后端推理服务成功启动后,请分别在运行前、后端服务的终端中,分别按ctrl + c 按钮,中止服务运行。

    • 前端启动完成示例:

    • 后端启动完成示例:

  1. 在任意终端中,按如下步骤配置dynamic_config.json文件。

    • 配置前端dynamic_config.json文件。

      1. 执行如下命令,获取参数值。

docker exec -it tdx_rag_backend bash -c "cd /usr/bin && ./tdx_report_parser"
回显示例:
请记录下回显的各参数值。

      1. 执行如下命令,打开前端dynamic_config.json文件。

vim /root/confidential-computing-zoo/cczoo/rag/frontend/chatbot-rag/dynamic_config.json
      1. 按i键进入编辑模式,将第一步获取的各参数值填入对应位置。

      • 配置前示例:

      • 配置后示例:

      1. 按esc键退出编辑,输入:wq按回车键,保存并退出文件。

    • 配置后端dynamic_config.json文件。

      1. 执行如下命令,获取参数值。

docker exec -it tdx_rag_frontend bash -c "cd /usr/bin && ./tdx_report_parser"
回显示例:
请记录下回显的各参数值。

      1. 执行如下命令,打开前端dynamic_config.json文件。

vim /root/confidential-computing-zoo/cczoo/rag/backend/pipelines/dynamic_config.json
      1. 按i键进入编辑模式,将第一步获取的各参数值填入对应位置。

      • 配置前示例:

      • 配置后示例:

      1. 按esc键退出编辑,输入:wq按回车键,保存并退出文件。

  1. 请参考上文2、3步骤,依次启动推理后端、前端服务,并在运行前端推理服务的终端中获取External URL对应的推理页面公网访问地址。

  1. 在任意可以访问公网的本地PC中,通过浏览器访问推理页面的公网访问地址即可与AI进行对话。

若网页显示如下图红框所示的信息,表示前、后端推理服务已基于Intel® TDX建立了安全的连接。


请关注微信公众号
微信二维码
不容错过
Powered By TOPYUN 云产品资讯