0


【NVIDIA NIM 黑客松训练营】基于NVIDIA NIM 平台提供的免费GPU和AI大模型能力实现数据分析问答系统

【项目介绍】

NVIDIA提供了免费的GPU和AI算力,旨在向各大公司及开发者推广自己的AI能力,开发者首次体验会免费提供1000个Credits left和至少个大模型[“mistralai/mistral-7b-instruct-v0.2”, “meta/llama-3.1-405b-instruct”]。由于openAI在国内申请麻烦并且还收费,本人看到这么好的免费机会,抓紧体验了一把,非常的过瘾。废话少说,直接上干货!

白嫖Credits 方案:

账号注册

访问: ai.nvidia.com ,点击 Try Now
在这里插入图片描述
在打开的的页面点击右上角的 Login
在这里插入图片描述
输入注册的邮箱
在这里插入图片描述
邮箱通过验证后,继续按照操作提示创建 NVIDIA 云账户
在这里插入图片描述
创建成功后,将会返回 NIM 平台的主页面,到这里您就用有了 NVIDIA云账户 。
再次点击右上角按钮,可以看到剩余免费额度,点击Request More 可以进行企业用户认证,获取更多使用额度
在这里插入图片描述
在这个界面我们能看到多种基于 NIM 平台的AI模型,接下来我们将使用其中之一的大语言模型,构建我们的数据分析问答系统。
到目前为止,我们注册好了账号,并有1000个credit。下边开始写代码。

【技术方案与实验步骤】

技术方案

要实现这个小系统,我们需要完成以下步骤:
1、安装python环境
2、创建一个数据集data
3、写一段python代码来构建系统
4、执行代码生成一个可视化页面
5、创建一个api-key
6、选择一个大模型来服务。
7、准备一些需求问题,验证系统的能力
下面详细介绍每一步骤的实现。

安装python环境

已经有python环境的同学可以跳过这一步。
以下是在不同操作系统中安装 Python 环境的步骤:
一、Windows 系统
打开浏览器,访问 Python 官方网站:https://www.python.org/。
在首页中找到 “Downloads”(下载)选项,点击进入下载页面。
在下载页面中,你会看到不同版本的 Python 可供选择。通常建议选择最新的稳定版本。
选择适合你系统的安装程序,一般来说,对于 Windows 64 位系统,选择 “Windows x86-64 executable installer”;对于 32 位系统,选择 “Windows x86 executable installer”。
下载完成后,双击安装程序开始安装。
在安装向导中,勾选 “Add Python [版本号] to PATH” 选项,这将确保你可以在命令提示符中直接运行 Python。
选择 “Customize installation”(自定义安装)以进行更详细的设置,或者直接选择 “Install Now”(立即安装)进行快速安装。
等待安装过程完成。
安装完成后,你可以打开命令提示符,输入 “python --version” 来验证 Python 是否安装成功,并查看安装的版本号。
二、macOS 系统
访问 Python 官方网站:https://www.python.org/。
在下载页面中选择适合 macOS 的安装程序,通常是 “macOS 64-bit installer”。
下载完成后,双击安装程序开始安装。
在安装向导中,按照提示逐步进行操作,通常默认设置即可满足大多数需求。
安装完成后,打开终端,输入 “python --version” 来验证安装是否成功。
三、Linux 系统(以 Ubuntu 为例)
打开终端。
输入以下命令来更新软件包列表:

sudo apt update

输入以下命令安装 Python:

sudo apt install python3

安装完成后,在终端中输入 “python3 --version” 来验证安装是否成功。
安装完成后,你可以根据需要安装一些常用的 Python 开发工具,如集成开发环境(IDE)如 PyCharm、VS Code 等,以及包管理工具 pip3,用于安装和管理各种 Python 库。
本作者使用的vscode编辑器来完成的。

创建一个数据集data

创建一个csv文件,把准备好的数据放进去。下边以电子产品为例。
在这里插入图片描述

写一段python代码来构建系统

首先要安装依赖库:
在终端输入如下命令:

pip3 install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitters faiss-cpu gradio==3.50.0 setuptools beautifulsoup4

新建一个python文件,如

nvd.py:

,详细代码如下:

# -*- coding: utf-8 -*-

# 导入必要的库
from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings, ChatNVIDIA
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import chain
import os
import gradio as gr
from datetime import datetime

# 假设性回答模板,这里假设是分析数据的趋势相关问题
hyde_template = """Even if you do not know the full answer, generate a one-paragraph hypothetical answer to the below data analysis question:

{question}"""

# 最终回答模板,基于提供的数据上下文回答问题
template = """Answer the data analysis question based only on the following data context:
{context}

Question: {question}
"""

# 定义函数来处理数据分析问题
def process_data_question(data_file_path, api_key, model_name, question):
    # 初始化加载器并加载数据
    loader = TextLoader(data_file_path)
    docs = loader.load()

    # 设置环境变量
    os.environ['NVIDIA_API_KEY'] = api_key

    # 初始化嵌入层
    embeddings = NVIDIAEmbeddings()
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    documents = text_splitter.split_documents(docs)
    vector = FAISS.from_documents(documents, embeddings)
    retriever = vector.as_retriever()

    # 初始化模型
    model = ChatNVIDIA(model=model_name)

    # 创建提示模板
    hyde_prompt = ChatPromptTemplate.from_template(hyde_template)
    hyde_query_transformer = hyde_prompt | model | StrOutputParser()

    # 定义检索函数
    @chain
    def hyde_retriever(question):
        hypothetical_document = hyde_query_transformer.invoke({"question": question})
        return retriever.invoke(hypothetical_document)

    # 定义最终回答链
    prompt = ChatPromptTemplate.from_template(template)
    answer_chain = prompt | model | StrOutputParser()

    @chain
    def final_chain(question):
        documents = hyde_retriever.invoke(question)
        response = ""
        for s in answer_chain.stream({"question": question, "context": documents}):
            response += s
        return response

    # 调用最终链获取答案
    return str(datetime.now()) + final_chain.invoke(question)

# 定义可用的模型列表
models = ["mistralai/mistral-7b-instruct-v0.2", "meta/llama-3.1-405b-instruct"]

# 启动Gradio应用
iface = gr.Interface(
    fn=process_data_question,
    inputs=[
        gr.Textbox(label="输入数据文件路径"),
        gr.Textbox(label="NVIDIA API Key"),
        gr.Dropdown(models, label="选择语言模型"),
        gr.Textbox(label="输入数据分析问题")
    ],
    outputs="text",
    title="数据分析问答系统"
)

iface.launch()

执行代码生成一个可视化页面

代码写好之后,检查一下,如果没有问题,我们开始在终端运行命令:

python3 -u "xxx/nvd.py"

在这里插入图片描述
运行结果如上图。生成访问地址: http://127.0.0.1:7860

创建一个api-key

获取NVIDIA API密钥
访问 https://build.nvidia.com/meta/llama-3_1-405b-instruct
点击Python标签下的Get API Key ,在弹出的框中点击 Generate Key
在这里插入图片描述
点击 Copy Key 我们保存好这个密钥。一定要保存,保存,保存哈!备份到一个文件里,方便多次复制多次使用。
在这里插入图片描述

选择一个大模型来服务。

打开页面http://127.0.0.1:7860,
在这里插入图片描述

然后输入数据地址、api-key(上边保存的密钥),选择大模型、输入问题,然后点击sumbit,开始等待,还有非常友好的时间进度。
在这里插入图片描述
当然,网络不好会超时报错,代码报错也没事,不用重启服务,重新点击一下sumbit就行:
在这里插入图片描述
在这里插入图片描述

准备一些需求问题,验证系统的能力

作者准备了一些问题:
1、最受欢迎的产品是什么?为什么?
2、最受欢迎的产品是什么?最不赚钱的产品是什么?为什么?
3、统计产品名称维度的销售情况,按销售总额排序。

【实验结果展示】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【分析与总结】
整体流程下来,非常的丝滑,很容易上手。
NVIDIA提供了免费的GPU和AI算力,大家如果对知识问答、数据分析和大模型感兴趣,且公司业务也有类似的需求,快速进入NVIDIA的官网体验一下吧!


本文转载自: https://blog.csdn.net/doing814/article/details/142901670
版权归原作者 doing814 所有, 如有侵权,请联系我们删除。

“【NVIDIA NIM 黑客松训练营】基于NVIDIA NIM 平台提供的免费GPU和AI大模型能力实现数据分析问答系统”的评论:

还没有评论