AI大模型測評系統opencompass源碼解析

1 注冊器(Registry)

為了管理功能相似的模塊,MMEngine實現了注冊器。注冊器可以被視作這些類或函數的抽象。例如注冊器 MODELS 可以被視作所有模型的抽象。

1.1 什么是注冊器

MMEngine 實現的注冊器可以看作一個映射表和模塊構建方法(build function)的組合。

映射表:維護了一個字符串到類或者函數的映射,使得用戶可以借助字符串查找到相應的類或函數,例如維護字符串 “ResNet” 到 ResNet 類或函數的映射,使得用戶可以通過 “ResNet” 找到 ResNet 類;

模塊構建方法:定義了如何根據字符串查找到對應的類或函數以及如何實例化這個類或者調用這個函數。

MMEngine 中的注冊器默認使用 build_from_cfg 函數來查找并實例化字符串對應的類或者函數。

def build_from_cfg(cfg: Union[dict, ConfigDict, Config],registry: Registry,default_args: Optional[Union[dict, ConfigDict, Config]] = None) -> Any:"""Build a module from config dict when it is a class configuration, orcall a function from config dict when it is a function configuration.If the global variable default scope (:obj:`DefaultScope`) exists,:meth:`build` will firstly get the responding registry and then callits own :meth:`build`.At least one of the ``cfg`` and ``default_args`` contains the key "type",which should be either str or class. If they all contain it, the keyin ``cfg`` will be used because ``cfg`` has a high priority than``default_args`` that means if a key exists in both of them, the value ofthe key will be ``cfg[key]``. They will be merged first and the key "type"will be popped up and the remaining keys will be used as initializationarguments.

函數 build_from_cfg 是設計用來從配置字典(配置實例)創建一個類實例或調用一個函數。這個函數是框架(如 MMDetection, MMClassification 等)中一個核心組件,它通過解耦配置和對象的實例化增加了系統的靈活性和可擴展性。具體來說,它從一個注冊表中獲取類或函數的類型,并使用提供的參數初始化它。

參數解釋
cfg: 這是一個包含配置信息的字典(或 ConfigDict/Config 類型),至少需要包含一個 type 鍵,該鍵指定了要構建或調用的類或函數的名稱。
registry: 這是一個 Registry 對象,build_from_cfg 函數會在這個注冊表中查找 type 指定的名稱,以獲取對應的類或函數。
default_args: 這是可選參數,提供一些默認的初始化參數,如果在 cfg 中沒有提供相應的值,則會使用這里的默認值。

功能詳解
類型和有效性檢查:函數開始會檢查 cfg 是否為字典或 ConfigDict/Config 類型。同時也會檢查 registry 是否為 Registry 類型,以及 default_args 是否為字典、ConfigDict、Config 或者 None。

合并參數:default_args 中的參數將與 cfg 合并。如果同一個鍵在兩者中都存在,cfg 中的值將會覆蓋 default_args 中的值。

處理注冊表和作用域:如果 cfg 中提供了特定的 scope,則函數將嘗試在該作用域下從注冊表中獲取相應的類或函數。

獲取并實例化類/調用函數:

如果 type 是字符串,會在注

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11606.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

八、e2studio VS STM32CubeIDE之內存使用情況窗口

目錄 一、概述/目的 二、STM32CubeIDE Build Analyzer 三、e2studio Memory Usage 八、e2studio VS STM32CubeIDE之內存使用情況窗口 一、概述/目的 1、嵌入開發最大特點之一就是資源受限,關注芯片資源使用詳情是優秀工程師的技能之一 2、Keil和IAR都不支持內存…

CTFshow 信息搜集

第一題1 進入靶場 直接看源碼發現flag 第二題 1 按右鍵沒辦法看源碼 按ctrlu可以查看源碼 第三題 0 查看源碼 發現還是什么都沒有 用bp抓包發現flag 第四題1 直接進robots.txt 訪問flagishere.txt獲得flag 第五題 0 提示了phps源碼泄露 用目錄掃描工具沒掃出來 看wp 發現有…

網絡編程套接字詳解

目錄 1. 預備介紹 2.網絡字節序 3.udp網絡程序 4.地址轉換函數 5.udp網絡編程 1.預備介紹 1.1源IP地址和目標IP地址 舉個例子: 從北京出發到上海旅游, 那么源IP地址就是北京, 目標IP地址就是上海. 1.2 端口號 作用: 標識一個進程, 告訴OS這個數據交給那個進程來處理; (1)…

Oracle: 一個用戶多個表空間處理

1.場景描述 今天工作中,同事說建了一個用戶,往里面導入數據時提示表空間不存在,建了表空間后,部分仍然導不進去。期望幫忙創建表空間,并指定默認表空間,成功將數據導入。 (1)創建好的…

K8s:二進制安裝k8s(單臺master)

目錄 一、安裝k8s 1、拓撲圖 2、系統初始化配置 2.1關閉防火墻selinx以及swap 2.2設置主機名 2.3在每臺主機中添加hosts,做映射 2.4調整內核參數,將橋接的ipv4流量傳遞到iptables,關閉ipv6 2.4時間同步 3、部署docker引擎&#xff0…

使用LangChain和Neo4j快速創建RAG應用

大家好,Neo4j 通過集成原生的向量搜索功能,增強了其對檢索增強生成(RAG)應用的支持,這標志著一個重要的里程碑。這項新功能通過向量索引搜索處理非結構化文本,增強了 Neo4j 在存儲和分析結構化數據方面的現…

go語言map底層及擴容機制原理詳解(上)

底層數據結構-哈希表 go語言map的底層數據結構是哈希表:通過哈希表來存儲鍵值對,通過hash函數把鍵值對散列到一個個桶(bucket)中。 什么是哈希表? 在順序結構以及平衡樹中,元素與其的存儲位置之間沒有對應關系,因此…

SwiftUI中的@StateObject和@ObservedObject的區別

SwiftUI中的StateObject和ObservedObject屬性包裝器指示視圖更新以響應被觀察對象的變化。雖然這兩個屬性包裝器看起來很相似,但在使用SwiftUI構建應用程序時,有一個關鍵的區別需要理解。 兩個屬性包裝器都要求對象符合ObservableObject協議。這個協議表…

表征和基于結構的蛋白質工程:黃芪特異性皂苷乙酰轉移酶-文獻精讀14

Characterization and structure-based protein engineering of a regiospecific saponin acetyltransferase from Astragalus membranaceus 表征和基于結構的蛋白質工程:黃芪特異性皂苷乙酰轉移酶,一篇乙酰基轉移酶文章精讀分享~ 摘要 乙酰化有助于許…

【C++】繼承相關(基類與派生類的繼承關系以及細節整理)

目錄 00.引言 01.繼承的定義 02.基類和派生類對象 03.繼承中的作用域 04.派生類的默認成員函數 05.友元、靜態成員 00.引言 繼承是面向對象編程中的一個重要概念,它的作用是創建一個新的類,該類可以從一個已存在的類(父類/基類&#x…

服務攻防——數據庫安全

第一步: 端口掃描:nmap 掃不到端口:端口被修改,防護軟件,放在內網環境 mysql 內置端口3306 第一種官方漏洞 第一步:先掃描有什么端口開發 用這個錯誤密碼一直訪問,最終就進去了 弱口令猜解 不可以直接猜解&#x…

WEB后端復習——MVC、SSM【含登錄頁面代碼】

MVC(Model-View-Controller)是一種軟件設計模式,用于將應用程序分解為三個相互關聯的組件:模型(Model)、視圖(View)和控制器(Controller)。這種模式在構建用戶…

機器人學導論實驗1—CoppeliaSim 平臺介紹及初步使用BJTU

1. 實驗內容分析 對實驗內容的理解及關鍵點: 理解這個實驗的關鍵點在于理解如何使用CoppeliaSim和MATLAB來控制和操作機器人。需要熟悉這兩個工具的基本操作,例如如何加載場景、如何修改機器人參數、如何使用MATLAB客戶端程序來控制機器人等。此外&#…

Docker 部署 Prometheus 實現一個極簡的 QPS 監控

背景 : Prometheus 是近年來最流行的開源監控框架, 其功能強大且易于使用, 擁有各種主流后端語言(Java/Go/Python/Node.js等)與各種場景(如web handler/ k8s/Nginx/MySQL等)的客戶端, 并自帶圖形化顯示頁面。分享一個快速入門Prometheus 的教程, 實現一個極簡的, 后端開發需要特…

Nginx-基礎-基礎配置-Location

Location 參數匹配模式 參數匹配方式匹配模式說明注意事項精準匹配普通字符串匹配用于標準uri前,要求請求字符串與uri精準匹配,成功則立即處理,nginx停止搜索其他匹配。~正則匹配正則表達式匹配用于正則uri,表示uri包含正則表達…

使用 Docker 輕松部署 Spring Boot 應用

當今軟件開發領域,Docker 和 Spring Boot 的組合已成為開發和部署應用程序的黃金標準。在這篇博客中,我們將詳細探討如何將 Spring Boot 應用容器化并使用 Docker 進行部署,確保你的部署過程既高效又可靠。 引言 Docker 提供了一個標準化的…

基于SSM的理發店會員管理系統的設計和實現(有報告)。Javaee項目。ssm項目。

演示視頻: 基于SSM的理發店會員管理系統的設計和實現(有報告)。Javaee項目。ssm項目。 項目介紹: 采用M(model)V(view)C(controller)三層體系結構&#xff0…

Docker安裝達夢數據庫

1.確保已安裝Docker 可參考:Linux安裝Docker-CSDN博客 2.上傳dm鏡像并導入安裝包 可以從:產品下載 | 達夢數據庫下載dm鏡像,如下圖: docker load -i dm8_20230808.tar 3.導入后查看鏡像 docker images 4.啟動容器 docker run …

圖的概念、性質和存儲與簡單遍歷

前置知識:樹的基本概念及性質 為了保證學習效果,請保證已經掌握前置知識之后,再來學習本章節!如果在閱讀中遇到困難,也可以回到前面章節查閱。 學習目標 掌握圖的基本概念掌握圖的一些性質 圖的概念 基本概念 圖 (…

Pytorch如何計算網絡參數

方法一. 利用pytorch自身 PyTorch是一個流行的深度學習框架,它允許研究人員和開發者快速構建和訓練神經網絡。計算一個PyTorch網絡的參數量通常涉及兩個步驟:確定網絡中每個層的參數數量,并將它們加起來得到總數。 以下是在PyTorch中計算網…