原標題:一文了解亞馬遜云科技Amazon Athena云上服務的日志結構化建表與查詢流程
服務介紹
亞馬遜云科技Amazon Bedrock是一項完全托管的服務,使用單個API提供來自AI21 Labs、Anthropic、Cohere、Meta、Stability AI和Amazon等領先人工智能公司的高性能基礎模型,以及構建生成式人工智能應用程序所需的一系列廣泛功能,在維護隱私和安全的同時簡化開發(fā)。借助Amazon Bedrock的全面功能,您可以輕松嘗試各種熱門FM,使用微調和檢索增強生成等技術利用數(shù)據(jù)對其進行私人定制,并創(chuàng)建可執(zhí)行復雜業(yè)務任務的托管代理,所有這些都無需編寫任何代碼。由于Amazon Bedrock是無服務器的,因此無需管理任何基礎設施,并且可以使用已經(jīng)熟悉的亞馬遜云科技服務將生成式人工智能功能安全地集成和部署到應用程序中。
Amazon Athena是一種交互式查詢服務,能夠輕松使用標準SQL直接分析Amazon Simple Storage Service(Amazon S3)中的數(shù)據(jù)。只需在服務界面中執(zhí)行幾項操作,即可將Athena指向Amazon S3中存儲的數(shù)據(jù),并開始使用標準SQL運行臨時查詢,然后在幾秒鐘內獲得結果。
在這篇文章中,以Amazon Bedrock的服務調用日志為例,闡述Amazon Athena對于云上服務的日志結構化建表與查詢流程,并獲取cost_input_token_cnt與cost_output_token_cnt兩個字段,可以快速幫助Bedrock用戶計算服務調用的費用,并以日期與小時為分組進行指標的統(tǒng)計。
開啟Bedrock日志
首先,在Amazon Bedrock的控制臺上開啟模型調用日志,選擇要開啟日志的日志類別以及日志的存儲目的地,這里選擇將模型調用日志輸出到Amazon S3中,如下圖所示。
在Amazon Athena中建立日志表
開啟Amazon Bedrock的模型調用日志后,將會在指定的Amazon S3路徑中看到Bedrock的模型調用日志。下載其中的日志文件后,可以看到具體的日志內容。每條日志是一次完整的調用記錄,以JSON對象的形式進行記錄,JSON對象中包括schemaType,schemaVersion,timestamp,accountId,region,requestId,operation,modelId,input,output字段,分別表示schema類型,schema版本,調用時間戳,賬號Id,調用的AWS region,請求Id,調用方法,使用的模型Id,調用的輸入以及調用的輸出。其中輸入input,輸出output均為嵌套的JSON對象字段,重要的包括inputBodyJson,inputTokenCount,outputBodyJson,outputTokenCount字段,分別表示輸入內容JSon,輸入的Token的數(shù)量,輸出內容JSon,輸出Token的數(shù)量。
另外,Amazon Bedrock轉存到Amazon S3的日志目錄層次較深,形式如S3://bucket/prefix/AWSLogs/YourAccount Id/BedrockModelInvocationLogs/region/year/month/day/hour,日志目錄是按區(qū)域、年、月、日、時這幾個維度來組織的。具體如下所示:
在了解了Amazon Bedrock模型調用日志的格式以及日志文件組織形式后,就可以對日志數(shù)據(jù)采用Amazon Athena來進行數(shù)據(jù)建模。考慮到Bedrock的日志是以小時為單位來對日志做輪轉的,結合對數(shù)據(jù)查詢的要求,可以采用日期和小時這兩個維度來進行數(shù)據(jù)分區(qū)。由于Bedrock自動按小時來組織日志數(shù)據(jù),日志數(shù)據(jù)建模時,需要考慮數(shù)據(jù)分區(qū)的自動更新問題,也就是說需要讓Athena感知到數(shù)據(jù)分析元數(shù)據(jù)信息。
對于分區(qū)信息的更新,可以采用基于事件的方式來動態(tài)更新數(shù)據(jù)的分區(qū)信息,當Amazon S3中產生了新的日期或者小時日志目錄時自動更新分區(qū)信息,這種方式可以比較 的控制分區(qū)數(shù)量。但是考慮到面向終端用戶的應用,應用都會實時在線,基本上每個小時都會有日志產生,并且這種的日志產生的模式是固定的,并且在長期會積累較多的分區(qū)信息。基于此,可以使用Amazon Athena的Partition Projection特性來自動化分區(qū)管理,并且加速查詢效率。
使用Athena Partition Projection進行數(shù)據(jù)建模
根據(jù)對Bedrock模型調用日志的分析,使用Amazon Athena建立日志數(shù)據(jù)表。
在SQL中,表中的各個字段映射到日志JSON對象中的各個字段,input和output字段采用struct類型映射嵌套的JSON對象,并指定日期dt和小時h這兩個分區(qū)字段。通過LOCATION指定日志數(shù)據(jù)的路徑,這個路徑指定到Region這個層級即可。在TBLPROPERTIES中,設置‘projection.enabled’屬性為‘true’來開啟表的分區(qū)映射功能,并且分別指定dt和h這兩個分區(qū)字段的類型以及對應的配置,其中dt映射為‘date’日期類型,日期格式為‘yyyyMMdd’,并設定日期的范圍以及日期間隔,h為枚舉類型,并給出所有的值。關于Athena的partition projection配置可以參考服務文檔。最后,由于日志數(shù)據(jù)的分區(qū)格式不是默認的Hive分區(qū)格式,需要設置‘storage.location.template’屬性來告知Athena底層數(shù)據(jù)的存放形式,具體的設置方法可以參考相關文檔。在Athena中建完表后,即可對數(shù)據(jù)進行查詢、統(tǒng)計和分析。
使用Amazon Athena進行數(shù)據(jù)查詢與成本分析
Bedrock price頁面提供了多種LLM模型調用計費模式,其中Claude On-Demand計費單價如下:
此外token count不足100按照100計算;谝陨闲畔ⅲ梢圆樵兡程(或某時)模型調用明細,包括每次的實際輸入Token數(shù)量、計費輸入Token數(shù)量、實際輸出Token數(shù)量、計費輸出Token數(shù)量。
比如想查看每個模型在當天總的輸入Token數(shù)、總的計費輸入Token數(shù)、總的輸出Token數(shù)、總的計費輸出Token數(shù)。
輸出結果如下:
數(shù)據(jù)建模后,除了可以通過Athena做交互式統(tǒng)計查詢、分析外,還可以通過Athena對接Amazon QuickSight或者Tableau等BI工具進行數(shù)據(jù)報表展示以獲得更好的使用體驗。
總結
綜上所述,以Bedrock為例,闡述了Amazon Athena這一Serverless服務進行云上日志結構化建表與查詢,并提取inputtokencount與outputtokencount兩個字段來幫助Bedrock用戶計算服務調用的費用。
投稿郵箱:chuanbeiol@163.com 詳情請訪問川北在線:http://fishbao.com.cn/