• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 網絡安全

    更智能、更安全地串流:了解 NVIDIA NeMo Guardrails 如何增強 LLM 輸出串流

    LLM 流式傳輸會在生成模型響應時,逐個 token 實時遞增發送該響應。輸出流式傳輸功能已從一項很好的功能發展為現代 LLM 應用的重要組件。

    傳統方法是等待幾秒鐘才能獲得完整的 LLM 響應,這會造成延遲,尤其是在需要多次模型調用的復雜應用中。在流式傳輸中,time to first token (TTFT)——從查詢提交到第一個生成的token——成為用戶感知的延遲至關重要。

    流式傳輸架構可在提示處理后立即啟動部分響應,從而顯著減少 TTFT,這通常會縮短初始等待時間。與此同時,令牌間延遲 (ITL) 基本保持不變,因為它反映了模型生成的固有速度。這種將初始響應能力 (TTFT) 與穩定狀態吞吐量 (ITL) 分離的做法可加快用戶反饋速度,而無需從根本上更改令牌生成機制。

    通過實施流式傳輸功能,開發者可以創造更流暢的用戶體驗,模擬自然對話的流程,而不是等待完整響應的脫節體驗。

    隨著企業越來越多地在生成式 AI 應用中采用流架構,保護實時交互的挑戰也在呈指數級增長。傳統的護欄解決方案通常難以滿足流式傳輸的獨特需求:平衡低延遲響應與全面的內容驗證,同時管理持續安全檢查的計算開銷。這些挑戰可能會導致基礎設施成本過高、用戶體驗支離破碎,以及更容易受到提示注入或數據泄露等新興威脅的影響。

    NVIDIA NeMo Guardrails 解決了這些痛點,為 LLM 流式傳輸架構提供簡化的集成路徑,同時以更低的延遲實現更高的合規性。通過將策略驅動的安全控制與模塊化驗證流程相結合,開發者能夠在不犧牲響應速度的情況下使用 NVIDIA NeMo Guardrails

    本博文探討了 NeMo Guardrails 如何簡化實時 AI 安全的復雜性,同時通過無縫的上下文感知保護來提高用戶信任度。

    使用 NeMo Guardrails 進行流式傳輸:優化延遲和響應速度

    ?

    NeMo Guardrails 中的串流模式的工作原理

    啟用流式傳輸后,輸出軌道將轉為增量驗證:

    • 分塊處理 LLM 響應被分割成多個塊 (可通過`config.yml` 中的`chunk_size` 進行配置) 。 每個數據塊都根據輕量級規則進行驗證 (例如,PII 檢查、使用 Safety NIM 進行安全檢查) 。除此之外,驗證還包括上下文感知審核,以防止提示注入嘗試分散在多個數據塊中。選擇合適的數據塊大小需要權衡取舍:較大的數據塊 ( 200-256 個 token) 可為幻覺檢測等軌道提供更好的環境,而較小的數據塊 ( 128 個 token) 可降低延遲,但可能會漏掉交叉數據塊的違規情況。在本文的其余部分,我們將使用術語“護欄服務”來指代 NeMo Guardrails 工具包和 NeMo Guardrails 微服務。
    • 使用緩沖區進行上下文感知審核 如前所述,驗證使用由近期令牌組成的滑動窗口緩沖區 (可通過 `context_size` 進行配置) (默認為 50 個令牌) ,在足夠的上下文中評估響應,而無需等待完整響應。Guardrails 服務僅在緩沖區達到配置的 chunk size 時才開始分析內容。這樣可以檢測跨多個 chunk 的違規情況 (例如,多部分內容審核) 。
    • 檢測被屏蔽的內容 Guardrails 服務會檢查從 LLM 流式傳輸的已處理 token 塊。如果某個 token 塊不安全并被輸出 rails 阻塞,Guardrails 服務將返回 JSON 格式的響應。下一節中對此進行了詳細說明。

    使用 NeMo Guardrails 簡化生成式 AI 輸出

    我們來看看適用于 RAG 的 NVIDIA AI Blueprint 中的護欄配置,并了解如何通過 NeMo Guardrails 增強的流式傳輸功能來提高生成式 AI (GenAI) 響應速度。我們首先了解配置的細微差別。

    流實現:配置和代碼

    我們將查看 guardrails 配置實現的詳細信息,如下所示。

    • 啟用串流模式
      • 選擇兼容流式傳輸的 LLM (例如,HuggingFace、OpenAI、NIM for LLMs)
      • streaming: True 添加到護欄配置的 config.yml 中:
    1. ?
    models:
      - type: "content_safety"
        engine: nim
        model: nvidia/llama-3.1-nemoguard-8b-content-safety
    
      - type: "topic_control"
        engine: nim
        model: nvidia/llama-3.1-nemoguard-8b-topic-control
    
    rails:
      input:
        flows:
          - content safety check input $model=content_safety
          - topic safety check input $model=topic_control
      output:
        flows:
          - content safety check output $model=content_safety
        streaming:
          enabled: True
          stream_first: True
          chunk_size: 200
          context_size: 50
    
    streaming: True

    我們將此配置剖析為小型、易于遵循的步驟。

    • 模型配置 安全模型
    models:
      - type: "content_safety"
        engine: nim
        model: nvidia/llama-3.1-nemoguard-8b-content-safety
    
      - type: "topic_control"
        engine: nim
        model: nvidia/llama-3.1-nemoguard-8b-topic-control
    • 輸入 rails
      • 根據安全 NIM 驗證用戶輸入,并拒絕違反任何安全或局部指南的輸入
    rails:
      input:
        flows:
          - content safety check input $model=content_safety
          - topic safety check input $model=topic_control
    • 輸出滑軌
      • 使用相同的 nemoguard-8b-content-safety NIM 過濾 LLM 響應,以防止有害輸出并確保合規性。
    • 流配置
      • enabled: True 支持響應流式傳輸,而 stream_first: True 可確保初始令牌在生成開始后立即從 LLM 發送到 Guardrails 服務,從而改善 TTFT
    rails:
      output:
        flows:
          - content safety check output $model=content_safety
        streaming:
          enabled: True
          stream_first: True  # Send tokens immediately
          chunk_size: 200     # Adjust based on latency/context needs
          context_size: 50    # Preserve context between chunks

    使用 stream_first: True 時,來自 LLM 的 token 在生成時立即流式傳輸給用戶,并同時進行緩沖 (用于審核) 。當緩沖區達到 chunk_size 時,系統會應用 Guardrails。

    無論使用哪種 stream_first: True,如果一條 rail 被觸發,并且響應違反了特定策略,那么 Guardrail 服務會生成如下 JSON 錯誤對象,但可能已經向用戶發送了令人不快的文本。調用方有責任管理此情況,并根據應用的具體情況對響應采取行動。流中發送的此 JSON 錯誤對象符合 Guardrail 服務處理此類事件的常見做法。

    {
      "error": {
        "message": "Blocked by <output_rail>.",
        "type": "guardrails_violation_type",
        "param": "<output_rail>",
        "code": "content_blocked"
      }
    }

    生成式 AI 響應速度的主要串流優勢

    使用 `enabled: False` 使用 NeMo Guardrails 禁用流式傳輸會優先考慮簡便性而非響應速度。啟用 Streaming 功能可通過以下方式提升 LLM 性能和用戶體驗:

    1. 降低可感知的延遲 Streaming 以增量方式向客戶端發送令牌,以便用戶在繼續生成時看到部分響應。這消除了等待完全完成的“死氣”效應。NeMo Guardrails 的逐塊驗證可確保部分輸出不會暴露不安全的內容。例如,通過使用 RAG 2.0 藍圖,用戶可以構建響應用戶查詢的代理式工作流。啟用流式傳輸后,用戶可以看到響應逐字逐句地形成,從而產生即時交互的感覺,而如果不進行流式傳輸,則會在整個響應出現之前暫停。
    1. 優化吞吐量在聊天機器人或虛擬助手等實時應用中,交互性至關重要。流式傳輸第一個token使用戶能夠在完全生成響應之前開始讀取或處理響應。對后續數據塊應用全面的安全檢查和內容安全NIM,在不影響響應速度的情況下確保安全。
    1. 高效提供資源串流支持在客戶端應用 (例如 Web UI) 中進行漸進式渲染,與緩沖完整響應相比,可減少內存開銷。NeMo Guardrails 與實時安全 NIM 集成,可在流式傳輸工作流中高效運行。

    通過啟用流式傳輸,Gen AI 應用從整體響應模型(生成和交付整個輸出作為一個單元)轉變為動態、增量交互流(在實時自適應塊中處理和顯示信息)。下面詳細分解了這對系統行為和用戶體驗的影響:

    Feature Streaming Disabled (False) Streaming Enabled (True)
    Time-to-First-Token* High Low
    Memory Usage Client-side buffering Progressive rendering
    Error Handling End-of-response validation Pre-chunk validation
    Safety Risk Delayed detection of issues 早期檢測不安全的 chunks
    表 1。顯示帶護欄的流式傳輸如何影響 LLM/Agent 行為和用戶體驗的詳細分解啟用流式傳輸時改善 TTFT 的性能指標

    對于延遲敏感型企業生成式 AI 應用 (例如,客戶支持代理) ,建議啟用流式傳輸,盡管實施十分復雜。NeMo Guardrails 可確保企業智能體通過其檢索軌道集成 RAG 工作流 (從檢索的數據塊中過濾敏感數據) ,并通過輸出軌道在交付前驗證響應,從而實時提供安全、合規的響應。

    例如,金融機構可以將 NVIDIA RAG 2.0 藍圖與 NeMo Guardrails 串流模式搭配使用,以提升性能。這意味著訪問實時交易數據并阻止未經授權的建議或帳戶披露。此外,我們還以遞增方式提供響應,從而提高速度和用戶體驗。

    結論

    NeMo Guardrails 中的流式傳輸能夠以增量方式提供輸出、降低感知延遲并提高用戶參與度,從而加快響應速度。但是,實時 token 流式傳輸可能會在完全驗證之前暴露不安全的內容。

    為了解決這一問題,開發者必須使用輕量級護欄 (例如,NeMo Guardrails 和適用于 AI 護欄的 NVIDIA NIM 微服務) 來平衡速度與安全性,以便進行每塊審核。流式傳輸還可以通過漸進式渲染提高資源效率,在保持對話流的同時最大限度地減少內存開銷。NeMo Guardrails 通過集成輸出軌道驗證來實現更安全的流式傳輸。對于生產,流式傳輸與異步檢查配對可確保延遲敏感型企業生成式 AI 應用的合規性。

    0

    標簽

    人人超碰97caoporen国产