區塊鏈的不可篡改特性使其成為儲存和管理AI模型評審記錄的理想選擇。本文介紹如何使用 Hyperledger Fabric 鏈碼及 Go 語言開發相關功能,確保評審記錄的透明度和可追溯性。同時也說明如何設定區塊鏈聯結器和 Oracle 聯結器,以整合區塊鏈與應用層,並透過 NestJS 框架實作前端與後端的互動,提供更友善的使用者介面。文章涵蓋 ModelReview 和 ModelReviewHistory 結構體的設計,以及 GetModelReviewHistory 函式的實作細節,並提供程式碼範例說明如何在鏈碼中讀取和寫入資料。此外,文章也說明區塊鏈聯結器的設定流程,包含憑證檔案傳輸、環境檔案設定等步驟,以及如何設定 Oracle 聯結器以與 OCI 互動,並透過環境變數的設定確保連線的安全性。
使用鏈碼儲存和管理AI模型評審記錄
在區塊鏈技術中,鏈碼(Chaincode)是一種特殊的智慧合約,用於管理和儲存資料。在本節中,我們將探討如何使用鏈碼儲存和管理AI模型評審記錄。
ModelReview 結構體
ModelReview 結構體是用於儲存AI模型評審記錄的資料結構。它包含了評審記錄的唯一標識、佈署URL、佈署指令、生產URL、評審檔案、評審狀態、評審模型版本ID、評分、評論、記錄日期、錄入使用者詳情和建立者MSP等欄位。
type ModelReview struct {
Id string `json:"id"`
DeployedUrl string `json:"deployedUrl,omitempty"`
DeploymentInstruction string `json:"deploymentInstruction,omitempty"`
ProductionURL string `json:"productionURL,omitempty"`
ReviewDocuments []ReviewDocument `json:"reviewDocuments,omitempty"`
ReviewStatus string `json:"reviewStatus"`
ReviewedModelVersionId string `json:"reviewedModelVersionId,omitempty"`
Ratings string `json:"ratings,omitempty"`
Comment string `json:"comment,omitempty"`
RecordDate string `json:"recordDate"`
EntryUserDetail EntryUserDetail `json:"entryUserDetail"`
CreatorMSP string `json:"creatorMSP"`
}
GetModelReviewHistory 函式
GetModelReviewHistory 函式用於從區塊鏈狀態資料函式庫中查詢與模型評審記錄ID相關的所有歷史記錄。
func GetModelReviewHistory(modelReviewId string) ([]*ModelReviewHistory, error) {
resultsIterator, err := ctx.GetStub().GetHistoryForKey(modelReviewId)
if err != nil {
return nil, errors.Wrap(err, "Error fetching blockchain history: ")
}
defer resultsIterator.Close()
// ...
}
ModelReviewHistory 結構體
ModelReviewHistory 結構體是GetModelReviewHistory 函式傳回的資料格式。它包含了評審記錄的歷史記錄。
type ModelReviewHistory struct {
// ...
}
鏈碼實作
鏈碼的實作需要使用特定的語言和框架。在本例中,我們使用Go語言和Hyperledger Fabric框架。
package main
import (
"encoding/json"
"fmt"
"log"
"github.com/hyperledger/fabric-chaincode-go/shim"
"github.com/hyperledger/fabric-protos-go/peer"
)
type ModelReviewChaincode struct {
}
func (c *ModelReviewChaincode) Init(stub shim.ChaincodeStubInterface) peer.Response {
// ...
}
func (c *ModelReviewChaincode) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
// ...
}
func main() {
chaincode := new(ModelReviewChaincode)
chaincode.Info.Version = "1.0"
chaincode.Info.Title = "Model Review Chaincode"
fmt.Printf("Model Review Chaincode starting...\n")
err := shim.Start(chaincode)
if err != nil {
log.Fatal(err)
}
}
區塊鏈模型評價和實驗
在區塊鏈技術中,模型評價和實驗是非常重要的步驟。以下是相關的程式碼和解釋。
模型評價歷史
type ModelReviewHistory struct {
TxId string `json:"txId,omitempty"`
IsDeleted bool `json:"isDeleted"`
ModelReview ModelReview `json:"modelReview,omitempty"`
}
這個結構體用於儲存模型評價的歷史記錄,包括交易ID、是否刪除和模型評價詳細資訊。
儲存模型評價
// Store modelReview state on ledger
err = ctx.GetStub().PutState(modelReview.Id, modelReviewAsBytes)
if err != nil {
log.Error(errors.Wrap(err, "Failed to Store ModelReview"))
return Error("Failed to Store ModelReview", INTERNAL_SERVER_ERROR)
}
這個函式用於儲存模型評價到區塊鏈狀態中,使用模型評價ID作為鍵。
模型工件
模型工件(model-artifact)是安裝在組織管理員、利益相關者、MLOps工程師和AI工程師組織節點上的鏈碼。模型工件鏈碼安裝在每個組織的c1-channel頻道上,因為模型工件應該被玄貓存取。
安裝模型工件鏈碼
$ ./installChaincode.sh model-artifact
這個指令碼用於安裝模型工件鏈碼到每個組織。
模型實驗
模型實驗(model-experiment)是安裝在公司管理員、利益相關者、MLOps工程師和AI工程師組織上的鏈碼。模型實驗鏈碼安裝在每個成員(組織)的c1-channel頻道上,因為模型實驗應該被玄貓存取。
安裝模型實驗鏈碼
$ ./installChaincode.sh model-experiment
這個指令碼用於安裝模型實驗鏈碼到每個組織。
圖表翻譯:
flowchart TD A[模型評價] --> B[儲存模型評價] B --> C[模型工件] C --> D[模型實驗] D --> E[玄貓存取]
這個流程圖示範了模型評價、儲存模型評價、模型工件、模型實驗和玄貓存取之間的關係。
區塊鏈聯結器設定
為了在 BTA 網頁介面中設定節點,您需要使用區塊鏈聯結器。這個聯結器負責連線 BTA 網頁應用程式的後端與區塊鏈網路。由於您的區塊鏈環境已經安裝和啟動,您可以執行一個指令碼來組態區塊鏈聯結器,以便當您使用 BTA 網頁應用程式時,它可以連線到您的區塊鏈網路。
區塊鏈聯結器是使用 NestJS(一個 Node.js 框架)建構的。您需要的區塊鏈聯結器數量對應於您在區塊鏈上建立的組織數量。對於 BTA,您需要有五個區塊鏈聯結器:一個用於超級管理員,一個用於組織管理員,一個用於利益相關者,一個用於 MLOps 工程師和一個用於 AI 工程師。
每個使用者的區塊鏈私鑰和公鑰將安全地儲存在其自己的組織中的錢包資料夾中,該資料夾位於區塊鏈聯結器佈署的地方。例如,如果任何利益相關者想要將其私鑰和公鑰安全地儲存,他們可以在自己的虛擬機器上執行自己的區塊鏈節點和區塊鏈聯結器,然後透過自己的虛擬機器進行任何交易。
為了讓區塊鏈聯結器連線到區塊鏈網路,您需要設定連線組態檔案。每個節點的區塊鏈聯結器將在節點的虛擬機器上佈署。
執行指令碼設定區塊鏈聯結器
您需要克隆 bc-connector
儲存函式庫,但您需要從 bta-blockchain/script
資料夾執行下一個指令碼。
$ cd bta-blockchain/script
$ ./setupAndRunBlockchainConnector.sh
這將複製 blockchain-connector
檔案以建立您的五個區塊鏈聯結器,建立環境檔案,並在 Docker 容器上執行區塊鏈聯結器。執行區塊鏈聯結器後,您將看到以下訊息:
---------------------------------------------------
成功佈署所有區塊鏈聯結器
---------------------------------------------------
區塊鏈聯結器節點連線資料儲存在 bc-connector-node-info
資料夾中。在 /bta-blockchain/bta-bc-connector
資料夾中,您可以看到一個名為 bc-connector-node-info
的新資料夾。該資料夾中將包含以下檔案:
Peer01SuperAdminBtaKilroy.md
Peer03ShBtaKilroy.md
Peer05AIEngineerBtaKilroy.md
Peer02AdminBtaKilroy.md
Peer04MLOpsBtaKilroy.md
以下是 Peer01SuperAdminBtaKilroy.md
檔案的內容示例。這些檔案是由區塊鏈聯結器自動生成的。檔案包含組織名稱、區塊鏈聯結器節點 URL 和授權令牌。
ORG_NAME=Peer01SuperAdminBtaKilroy
AUTHORIZATION_TOKEN=aWNhLW8xLXN1cGVyLWFkbWluLWJ0YS1raWxyb3k6SWNhLU8xLVN1cGVyLUFk...
多個區塊鏈聯結器
多個資料夾用於區塊鏈聯結器,每個使用者型別一個。這些資料夾包含連線組態檔案、加密檔案和環境檔案。
連線組態檔案設定
連線組態檔案是 JSON 檔案(位於 /src/blockchain-files/connection-profile
),它包含所有節點 URL 和憑證以連線到區塊鏈節點。五個組織的連線組態檔案靜態地儲存在 /src/blockchain-files/connection-profile
資料夾中。指令碼將在連線組態檔案中替換 IP 地址為虛擬機器的私有 IP 地址。
憑證檔案傳輸
節點、訂單者和中間 CA 的憑證對於區塊鏈聯結器連線到區塊鏈網路是必要的。指令碼複製這些憑證到區塊鏈聯結器的資料夾中。
環境檔案設定
環境檔案包含區塊鏈聯結器的設定引數,例如組織名稱、授權令牌和節點 URL。指令碼將建立環境檔案並設定這些引數。
這些步驟確保區塊鏈聯結器可以連線到區塊鏈網路並執行交易。
區塊鏈聯結器設定
在本章中,我們將設定區塊鏈聯結器,以便它可以與我們在第 5 章中設定的區塊鏈網路進行互動。首先,我們需要從區塊鏈網路中取得憑證,並將其複製到 /src/blockchain-files/crypto-files
目錄中,以便區塊鏈聯結器使用。
接下來,我們需要設定環境檔案,以便將靜態資料傳遞給區塊鏈聯結器應用程式。環境檔案也會被玄貓修改。以下是超級管理員聯結器的 .env
檔案範例:
CONNECTION_FILE_PATH=src/blockchain-files/connection-profile/
ICA_CONTAINER_NAME=ica.o1-super-admin.bta.kilroy
CA_ADMIN_ID=ica-o1-super-admin-bta-kilroy
CA_ADMIN_PWD=Ica-O1-Super-Admin-Bta-Kilroy
CA_MSP_ID=Peer01SuperAdminBtaKilroyMSP
ORG_NAME=Peer01SuperAdminBtaKilroy
CERTIFICATE_TYPE=X.509
PEER_NAMES=["peer0.o1-super-admin.bta.kilroy"]
APP_PORT=5004
AUTHORIZATION_TOKEN=aWNhLW8xLXN1cGVyLWFkbWluLWJ0YS1raWxyb3k6SWNhLU8xLV...
ADMIN_ID=08db14a1076cd3dd43e99220f53a62635ba0502e3a7d1f89b4e90316ab558330
BTA_BC_CONNECTOR_NAME=bta_bc_connector_o1_super_admin
BTA_BC_CONNECTOR_IMAGE=bta-bc-connector-o1-super-admin
如果您想要重新啟動整個 BTA 和支援系統,例如當您停止工作並稍後還原,您可以使用 Docker 重新啟動容器。
設定 Oracle 聯結器
Oracle 聯結器用於連線後端應用程式與 OCI。在這裡,您將設定 Oracle 聯結器,以便 OCI 可以與您的區塊鏈進行互動。要克隆 Oracle 聯結器,請執行以下步驟:
首先,克隆 Oracle 聯結器倉函式庫。然後,檢視 README.md
檔案以取得任何更新的安裝說明。
您需要為您的 Oracle 聯結器建立一個唯一的環境檔案,以對應您在第 5 章中設定的 Oracle Cloud 資源。以下是 Oracle 聯結器的樣本環境檔案 .env-sample
:
AUTHORIZATION_TOKEN=Uhx0el9iKHwyMJv6NUJ90dZq3pqAH1HDY2KII9CkX!LH3bia3nFYlVIJ3oRx...
請注意,您需要將此檔案複製到 .env
並自訂它以符合您的 OCI 組態。
設定 Oracle 聯結器環境變數
為了連線您的 BTA(Blockchain Transformation Agent)到 OCI(Oracle Cloud Infrastructure),您需要設定環境變數。這些變數包含了連線到您的 Oracle Identity Cloud Service 的必要資訊。
複製樣本檔案
首先,複製樣本檔案 .env-sample
並命名為 .env
:
$ cd oracle-connector
$ cp .env-sample .env
編輯 .env
檔案
使用您偏好的編輯器(如 Vim)開啟 .env
檔案:
$ vim .env
在 Vim 中,按 i
鍵進入插入模式。您可以使用 Esc
鍵離開插入模式,然後按 Shift+D
刪除行尾的內容。要貼上文字,請確保您處於插入模式,然後使用選單或 Ctrl+v
貼上。
設定環境變數
您需要設定以下環境變數:
OBC_ADMIN_HOST
: Oracle Identity Cloud Service 主機 URLOBC_ADMIN_USERNAME
: 管理員使用者名稱OBC_ADMIN_PASSWORD
: 管理員密碼OBC_ADMIN_SCOPE
: 範圍(通常為urn:opc:idm:__myscopes__
)REDIS_HOST
: Redis 主機REDIS_PORT
: Redis 埠APP_PORT
: 應用程式埠PORT
:埠號API_AUTHORIZATION_TOKEN
: API 授權令牌
從 OCI 取得變數值
登入您的 OCI 帳戶,然後點選「Identity」>「Federation」。點選「OracleIdentityCloudService」以開啟 Oracle Identity Cloud Service 主控臺。您可以在此主控臺中找到必要的變數值。
複製和貼上變數值
使用您的編輯器開啟 .env
檔案,然後複製和貼上變數值。例如,OBC_ADMIN_HOST
變數值應為您的 Oracle Identity Cloud Service 主機 URL。
儲存和離開
在 Vim 中,按 Esc
鍵離開插入模式,然後輸入 :wq
儲存檔案並離開 Vim。您可以使用 type .env
命令驗證檔案的內容。
提交變更
如果您使用命令列編輯器直接在伺服器上修改檔案,請記得提交變更並推播到您的版本控制函式庫,以避免丟失修改。
設定 Oracle 聯結器
為了設定 Oracle 聯結器,需要完成以下步驟:
步驟 1:存取 Oracle Identity Cloud Services
首先,點選 Oracle Identity Cloud Service Console 連結,該連結位於身份提供者標籤頁。這個連結與您之前複製的 OBC_ADMIN_HOST 連結相同。點選後,將在瀏覽器中開啟一個新標籤,如圖 6-12 所示。
步驟 2:設定 Oracle Cloud Blockchain Service
從儀錶板中,點選左上角的選單,然後選擇 Oracle Cloud Services。如圖 6-13 所示,您需要找到「oraclebc-…」雲端服務。如果您尚未新增 Oracle Cloud Blockchain Service,則需要新增一個。
步驟 3:複製使用者端 ID 和使用者端密碼
點選 Configuration 標籤,然後複製 General Information 區段中的使用者端 ID 和使用者端密碼。點選 Show Secret 按鈕,如圖 6-14 所示,以複製使用者端密碼。
步驟 4:編碼使用者端 ID 和使用者端密碼
將使用者端 ID 和使用者端密碼編碼為 Base64 字串,格式為 <client_id>:<client_secret>
。然後,點選 ENCODE 按鈕以取得編碼的 Base64 字串。
步驟 5:設定環境變數
將編碼的 Base64 字串複製並貼上到環境檔中,作為 AUTHORIZATION_TOKEN
變數的值。
步驟 6:設定 OBC_ADMIN_USERNAME 和 OBC_ADMIN_PASSWORD
OBC_ADMIN_USERNAME
變數儲存您的 OCI 使用者名稱稱,即您用於登入的使用者名稱稱。OBC_ADMIN_PASSWORD
變數儲存您的 OCI 使用者密碼。
步驟 7:設定 OBC_ADMIN_SCOPE
OBC_ADMIN_SCOPE
變數需要儲存 Oracle 雲 API 的範圍。完成此值,如範例 6-13 所示。
步驟 8:設定 REDIS_HOST 和 REDIS_PORT
REDIS_HOST
變數儲存 Redis 主機 URL,即本地主機。REDIS_PORT
變數儲存 Redis 佈署的埠號。您可以將其設為環境檔中預設的埠號,如範例 6-14 所示。
步驟 9:設定 APP_PORT
APP_PORT
變數儲存 Oracle 聯結器的埠號。您可以將其設為預設值 APP_PORT=3000
,只要埠號未被其他應用程式佔用。
步驟 10:設定 API_AUTHORIZATION_TOKEN
API_AUTHORIZATION_TOKEN
變數儲存後端應用程式連線到 Oracle 聯結器的唯一令牌。您需要在後端應用程式環境檔中設定 API_AUTHORIZATION_TOKEN
,使其與當前令牌相同。
步驟 11:啟動 Oracle 聯結器
最後,啟動 Oracle 聯結器,使用以下命令:
./setupAndRunOracleConnector.sh
成功完成後,指令碼將傳回以下輸出:
---------------------------------------------------
內容解密:
上述步驟描述了設定 Oracle 聯結器的過程,包括存取 Oracle Identity Cloud Services、設定 Oracle Cloud Blockchain Service、複製使用者端 ID 和使用者端密碼、編碼使用者端 ID 和使用者端密碼、設定環境變數、設定 OBC_ADMIN_USERNAME 和 OBC_ADMIN_PASSWORD、設定 OBC_ADMIN_SCOPE、設定 REDIS_HOST 和 REDIS_PORT、設定 APP_PORT、設定 API_AUTHORIZATION_TOKEN,最後啟動 Oracle 聯結器。
圖表翻譯:
flowchart TD A[設定 Oracle 聯結器] --> B[存取 Oracle Identity Cloud Services] B --> C[設定 Oracle Cloud Blockchain Service] C --> D[複製使用者端 ID 和使用者端密碼] D --> E[編碼使用者端 ID 和使用者端密碼] E --> F[設定環境變數] F --> G[設定 OBC_ADMIN_USERNAME 和 OBC_ADMIN_PASSWORD] G --> H[設定 OBC_ADMIN_SCOPE] H --> I[設定 REDIS_HOST 和 REDIS_PORT] I --> J[設定 APP_PORT] J --> K[設定 API_AUTHORIZATION_TOKEN] K --> L[啟動 Oracle 聯結器]
上述流程圖描述了設定 Oracle 聯結器的過程,包括各個步驟之間的關係。
Oracle 聯結器設定完成
Oracle 聯結器已經設定完成,並在 5818 埠上執行。這是設定 Oracle 聯結器所需的最後一個 shell 指令碼。
區塊鏈與應用層整合
區塊鏈應用平臺(BTA)的應用層是使用者介面,允許使用者建立專案、提交訓練和測試的 AI 模型,並將其與區塊鏈繫結。這一層是根據 MEAN 堆積疊的前端層,使用 NestJS 作為後端,向必要的 API 進行呼叫。
NestJS 檔案以 .ts
副檔名錶示,代表 TypeScript。BTA 的區塊鏈程式碼使用 .ts
檔案將區塊鏈與應用層整合,生成如 addNewVersion
和 invoke
等函式。
NestJS 檔案結構
NestJS 檔案位於 bta-api
資料夾中,包含多個模組,每個模組都有一個控制器和兩個服務檔案。控制器負責處理傳入的請求,並將其交給程式的邏輯,然後傳回輸出。
重要函式
區塊鏈聯結器中有一些重要的函式,包括 query
、registerUser
、getAllGroupList
和 addUserToGroup
。
query 函式
query
函式透過區塊鏈聯結器呼叫查詢 API,從區塊鏈狀態中讀取資料。它接收一個 bcAuthenticateDto
引數,包含用於區塊鏈連線的驗證資料。
async query(bcAuthenticateDto: BcAuthenticationDto): Promise<BcConnectionDto> {
try {
const response = await axios.get(bcAuthenticateDto.nodeUrl + bcAuthenticateDto.bcConnectionApi, {
headers: {
'Content-Type': 'application/json',
authorization: 'Basic ' + bcAuthenticateDto.basicAuthorization,
channel_name: bcAuthenticateDto.channelName,
key: await decryptKey(bcAuthenticateDto.bcKey),
salt: bcAuthenticateDto.salt
}
});
return new BcConnectionDto(response.data.data);
} catch (error) {
const err = error as AxiosError;
logger.error(err.response ? JSON.stringify(err.response.data) : err);
throw err;
}
}
這個函式使用 Axios 包進行與區塊鏈聯結器的通訊,呼叫 get 請求,並傳遞驗證資料。完成請求後,它傳回 BcConnectionDto
型別的回應。
第6章:例項化您的區塊鏈
6.1 使用者註冊
為了在Oracle Cloud中註冊使用者,我們需要建立一個函式,該函式呼叫Oracle Cloud聯結器函式,以使用電子郵件地址在Oracle Cloud中建立使用者帳戶。如果給定的電子郵件已在雲端註冊,則會丟擲一個錯誤,錯誤訊息為“具有相同電子郵件地址的使用者已經存在”。
6.1.1 註冊使用者函式
async registerUser(ocUserRegisterDto: OCUserRegisterDto): Promise<void> {
try {
// 預設密碼為Oracle Cloud
ocUserRegisterDto.password = 'Test@1234';
// 此函式傳送POST請求以在Oracle Cloud中註冊
await this.ocConnectorService.post(ocUserRegisterDto, OC_CONNECTION_API.REGISTER_USER);
} catch (err) {
throw new ConflictException(['具有相同電子郵件地址的使用者已經存在']);
}
}
6.2 Oracle Cloud 群組
應用程式需要取得所有Oracle Cloud群組列表,以便正確地將其分配給使用者。以下是Oracle Cloud群組的UML類別圖。
6.2.1 取得所有群組列表函式
async getAllGroupList(): Promise<OCGroupDto[]> {
// 此函式傳送GET請求以取得所有Oracle Cloud群組
const ocConnectionResponse = await this.ocConnectorService.get(OC_CONNECTION_API.GROUP_LIST);
const ocGroupDtoList: OCGroupDto[] = [];
for (const data of ocConnectionResponse.data) {
const ocGroupDto = new OCGroupDto();
ocGroupDto.id = data.id;
ocGroupDto.displayName = data.displayName;
ocGroupDtoList.push(ocGroupDto);
}
// 傳回所有Oracle Cloud群組
return ocGroupDtoList;
}
6.2.2 將使用者新增到群組函式
async addUserToGroup(ocUserGroupAddDto: OCUserGroupAddDto): Promise<void> {
const ocUserGroupDto = new OCUserGroupDto();
// 將使用者新增到群組中
ocUserGroupDto.groupId = ocUserGroupAddDto.groupId;
ocUserGroupDto.userName = ocUserGroupAddDto.email;
// 將使用者新增到Oracle群組
await this.ocConnectorService.post(ocUserGroupDto, OC_CONNECTION_API.ADD_USER_TO_GROUP);
}
6.3 資料抽取、轉換和載入
企業區塊鏈平臺和區塊鏈商業分析通常提供一個具有使用者和組織身份、許可、資料存取控制和各種隱私功能的安全模型,例如Hyperledger Fabric中的頻道或私有資料集合。然而,由於安全性、效能或複製問題,可能不希望外部抽取資料。
抽取、轉換和載入(ETL)是一個三步驟的資料整合過程,用於資料湖、統一資料儲存函式庫、關聯式資料函式庫或任何其他應用程式。資料遷移和雲資料整合是ETL的常見使用案例。最初,組織編寫自己的ETL程式碼,但現在有許多開源工具和主要公司(如IBM、Google和Microsoft)提供的雲伺服器可用。這些工具在抽取階段收集資料並在臨時儲存中持有它,在轉換階段處理資料以使值和結構保持一致和特定於使用案例,並在載入階段將資料轉移到本地或雲目標資料儲存中。
目前,許多區塊鏈平臺的帳本實作並不適合分析查詢,因為這不是其主要設計目標。為瞭解決這個限制,使用一個儲存最新資料快照的次要資料函式庫的平臺是最佳選擇。例如,Oracle提供了一個豐富的歷史資料函式庫,與Oracle Blockchain的Hyperledger Fabric實作一起執行,記錄選定頻道上的事務。豐富的歷史資料可用於生成分析報告和視覺化。
從技術架構視角來看,利用鏈碼儲存和管理AI模型評審記錄,展現了區塊鏈技術在提升AI模型管理效率和透明度方面的巨大潛力。透過ModelReview
結構體的設計,評審記錄的關鍵資訊得以完整儲存於區塊鏈上,實作了資料的不可篡改性和可追溯性。GetModelReviewHistory
函式的設計,更進一步提升了查詢效率,方便追蹤模型的評審歷程。然而,目前鏈碼的實作細節仍需完善,例如許可權控管機制、資料加密策略以及跨鏈互操作性等方面,都需進一步考量。
此外,將模型評審流程整合至區塊鏈,也為模型治理和稽核帶來了新的可能性。透過鏈碼記錄所有評審操作,可以有效降低人為干預的風險,提升評審流程的公信力。同時,區塊鏈的去中心化特性也能夠促進跨組織的協作,加速模型的迭代和佈署。但需注意的是,區塊鏈的效能瓶頸和儲存成本也是需要考量的因素,特別是針對大型模型和頻繁的評審更新。
展望未來,隨著區塊鏈技術的持續發展,預期將出現更多針對AI模型管理的鏈碼應用。例如,可以結合零知識證明技術,在保護模型智慧財產權的同時,實作模型評審的可驗證性。此外,透過整合去中心化儲存方案,可以進一步降低儲存成本,提升系統的擴充套件性。玄貓認為,區塊鏈技術與AI模型管理的結合,將成為未來AI發展的重要趨勢,值得持續關注和投入。對於希望提升模型管理效率和透明度的企業,建議積極探索根據區塊鏈的解決方案,並根據自身需求進行客製化開發。