• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 生成式人工智能/大語言模型

    使用 Brev.dev 和 NVIDIA NGC 目錄實現一鍵部署 GPU 優化 AI 軟件解決方案

    Brev.dev 正在利用 NVIDIA NGC 目錄上的軟件庫、框架和 Jupyter Notebooks,讓開發 AI 解決方案變得更加輕松。

    通過將云編排工具與簡單的 UI 搭配使用,您可以使用 Brev.dev 在 NVIDIA GPU 上輕松部署軟件,從任何云中可靠地獲取按需 GPU,在瀏覽器中訪問 notebook,或使用 Brev CLI 直接 SSH 到機器中。

    NGC 目錄是安全的 GPU 優化軟件中心,包括容器、模型和 Jupyter Notebooks。該目錄簡化了開發和部署 AI 解決方案的流程,加快了企業的上市時間。

    解決方案亮點

    此集成解決了在云中啟動 GPU 實例和獲得集成開發環境(IDE)時通常會遇到的許多挑戰,例如設置底層軟件堆棧、調配正確的計算和管理 SSH 密鑰。現在,只需單擊一下,即可將 NGC 目錄中的各種軟件無縫部署到您首選的計算和 IDE 中。

    此解決方案的主要特性包括:

    • 一鍵部署:簡化 NVIDIA AI 軟件的部署,不需要配額、專業知識或設置。這一手動流程通常需要數小時,現在只需 2-3 分鐘即可完成。
    • 隨時隨地部署:Brev 的 API 可充當跨本地數據中心、公有云提供商以及混合云和私有云的統一接口,從而使您能夠在任何環境中輕松部署 NVIDIA 軟件。通過將云添加到 Brev,您可以消除對任何計算源的潛在鎖定。
    • 簡化設置流程:Brev 的開源容器工具 Verb 可靠地在任何 GPU 上安裝 CUDA 和 Python,并解決依賴項問題,從而節省寶貴的時間。
    • 安全網絡:借助 Brev 的 CLI 工具,您可以輕松地管理 SSH 密鑰,從而安全地連接到任何計算源,而不需要處理繁瑣的 IP 或 PEM 文件。

    微調 Mistral Jupyter Notebook

    本節通過一個專注于微調大型語言模型(LLMs)的 Jupyter Notebook 示例,探討如何使用 NVIDIA NeMo 訓練、評估和測試 Mistral 7B,以完成問答任務。

    NVIDIA NeMo 是一個端到端平臺,可隨時隨地開發自定義生成式 AI,它包含用于數據管護、訓練、檢索增強生成 (RAG) 和護欄的工具,為企業提供了一種簡單、經濟高效的方式來采用生成式 AI。

    借助 Brev 的一鍵式部署集成,您可以快速訪問 GPU 并開始使用 NeMo 自定義生成式 AI 模型。所需的軟件堆棧(包括 NeMo)由 Brev 的平臺設置,使您可以專注于 AI 開發,現在您可以快速利用完全 GPU 加速的堆棧,而無需擔心必要的基礎設施管理開銷。

    第 1 步:設置前提條件

    首先,從 NGC 目錄中獲取 Notebook。在 Brev 上部署后,您可以從瀏覽器訪問它,然后開始執行不同代碼塊。

    選擇 NGC 目錄頁面上的“1-click Deploy”(一鍵部署) 按鈕。系統將指示您在 Brev 上微調 Notebook (圖 1)。

    Screenshot of the Mistral Jupyter Notebook page on the NGC catalog.
    圖 1.NGC 目錄上的 Mistral Jupyter Notebook

    接下來,單擊“Deploy Notebook”(部署 Notebook) 按鈕 (圖 2)。如果您是 Brev 的新用戶,系統會提示您創建帳戶。在這種情況下,您需要重新單擊“Deploy Notebook”(部署 Notebook) 按鈕。

    Screenshot of Mistral Jupyter Notebook page on Brev.
    圖 2.Brev 上的 Mistral Jupyter Notebook

    等待實例完成設置和配置。當 JupyterLab 在NVIDIA A100 Tensor Core GPU上準備就緒時,單擊“Access Notebook”。

    第 2 步:準備基礎模型

    接下來,將 Mistral 7B 下載到您的實例中,并將其轉換為 .nemo 格式。使用以下命令從 Hugging Face 中提取模型并運行轉換腳本。

    !pip install ipywidgets !jupyter nbextension enable --py widgetsnbextension !mkdir -p models/mistral7b
    import huggingface_hub from huggingface_hub import login TOKEN = "" login(TOKEN)
    huggingface_hub.snapshot_download(repo_id="mistralai/Mistral-7B-v0.1",
    local_dir="models/mistral7b", local_dir_use_symlinks=False) !python
    /opt/NeMo/scripts/nlp_language_modeling/convert_hf_mistral_7b_to_nemo.py
    --in-file=models/mistral7b --out-file=models/mistral7b.nemo

    此命令使用nlp_language_modeling用于將 Mistral 模型轉換為 .nemo 格式的 NeMo 子目錄,以便利用 NeMo 框架進行微調。

    第 3 步:準備微調數據

    此示例在 PubMedQA 數據集上微調了 Mistral 7B。PubMedQA 的任務是回答醫學研究問題,以是/否/可能形式回答。PubMedQA 擁有 1K 專家標記、61.2K 無標記和 211.3K 人工生成的 QA 實例。

    以下命令將 PubMedQA 數據轉換為 .jsonl 格式,以便使用 NeMo 進行參數高效微調 (PEFT)。此外,還需要將數據重新格式化為模型可以適當處理的提示,以便模型能夠正確地處理數據。

    !git clone https://github.com/pubmedqa/pubmedqa.git
    !cd pubmedqa/preprocess && python split_dataset.py pqal
    import json
     
    def write_jsonl(fname, json_objs):
        with open(fname, 'wt') as f:
            for o in json_objs:
                f.write(json.dumps(o)+"\n")
     
    def form_question(obj):
        st = ""
        st += f"QUESTION:{obj['QUESTION']}\n"
        st += "CONTEXT: "
        for i, label in enumerate(obj['LABELS']):
            st += f"{obj['CONTEXTS'][i]}\n"
        st += f"TARGET: the answer to the question given the context is (yes|no|maybe): "
        return st
     
    def convert_to_jsonl(data_path, output_path):
        data = json.load(open(data_path, 'rt'))
        json_objs = []
        for k in data.keys():
            obj = data[k]
            prompt = form_question(obj)
            completion = obj['reasoning_required_pred']
            json_objs.append({"input": prompt, "output": completion})
        write_jsonl(output_path, json_objs)
        return json_objs
    test_json_objs = convert_to_jsonl("pubmedqa/data/test_set.json", "pubmedqa_test.jsonl")
    train_json_objs = convert_to_jsonl("pubmedqa/data/pqal_fold0/train_set.json", "pubmedqa_train.jsonl")
    dev_json_objs = convert_to_jsonl("pubmedqa/data/pqal_fold0/dev_set.json", "pubmedqa_val.jsonl")

    數據現已準備就緒。已為微調任務設置訓練和測試數據集。

    第四步:運行訓練

    設置 GPU 配置、精度、最大步長等后,使用 NeMo 框架初始化訓練流程。以下代碼導入必要的類和模塊,創建訓練器實例,設置實驗管理器,并加載預訓練的 Megatron GPT 模型。這將合并配置,并使用所提供的訓練器恢復模型。然后,該設置將運行 Mistral 的實際微調,使用 LoRA 和 PEFT。

    from nemo.collections.nlp.models.language_modeling.megatron_gpt_sft_model import MegatronGPTSFTModel
    from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronLMPPTrainerBuilder
    from nemo.collections.nlp.parts.peft_config import LoraPEFTConfig
    from nemo.utils.exp_manager import exp_manager
     
    trainer = MegatronLMPPTrainerBuilder(cfg).create_trainer()
    exp_manager(trainer, cfg.exp_manager)
     
    model_cfg = MegatronGPTSFTModel.merge_cfg_with(cfg.model.restore_from_path, cfg)
    model = MegatronGPTSFTModel.restore_from(cfg.model.restore_from_path, model_cfg, trainer=trainer)
     
    model.add_adapter(LoraPEFTConfig(model_cfg))
    trainer.fit(model)

    訪問 GitHub 上的 NVIDIA/NeMo 框架啟動程序,查看 NVIDIA NeMo 框架啟動程序和工具的相關文檔。

    第 5 步:查看性能和結果

    現在,Mistral 7B 模型已經過微調,請使用以下命令檢查其相對于測試數據集的表現如何:

    trainer.test(model)

    trainer.test(model)行執行測試循環,該循環用于評估模型在測試數據集上的性能。輸出顯示測試指標(包括測試損失和 PubMedQA 數據集上的損失)以及驗證損失。由于 LoRA 適配器被用于微調 Mistral,這是衡量模型在后 PEFT 中的表現的好方法。

    現在,您已使用 NeMo 成功微調 Mistral 7B。

    通過充當所有云的單一界面并自動設置過程,Brev 使您能夠充分利用 NVIDIA 軟件的強大功能,而無需離開 NVIDIA 生態系統。使用 NGC 軟件的全部功能,減少約束,以增強跨任何項目規模的 AI 開發和部署的易用性。

    開始使用 PyTorch 等技術

    開始使用 Brev 的一鍵式部署,以調配 GPU 基礎架構 – 前 2 小時免費:

    此外,Brev 正在積極地將 1 鍵部署功能擴展到 NGC 目錄中的更多 NVIDIA 軟件上。探索 Brev.dev 的 Quick Deploy 集合

    ?

    0

    標簽

    人人超碰97caoporen国产