生成式人工智能驅(qū)動(dòng)的數(shù)據(jù)工程:現(xiàn)代數(shù)據(jù)工程師至少應(yīng)掌握哪些技能
生成式人工智能 (GenAI) 已從最初的好奇發(fā)展成為數(shù)據(jù)工程工作流程中的日常工具:我們現(xiàn)在只需一個(gè)精心設(shè)計(jì)的指令,就能起草架構(gòu)、生成模式、啟動(dòng)基礎(chǔ)設(shè)施模板,甚至生成隱私保護(hù)數(shù)據(jù)。本文將我的經(jīng)驗(yàn)與當(dāng)前的行業(yè)實(shí)踐相結(jié)合,提煉成一份循序漸進(jìn)的參考指南,供想成為數(shù)據(jù)工程師或處于職業(yè)生涯中期的人士參考。
為什么它今天如此重要?
人工智能工作負(fù)載的爆炸式增長(zhǎng): Apache Flink 2.0等實(shí)時(shí)分析平臺(tái)現(xiàn)在開箱即用地承擔(dān) LLM 級(jí)延遲要求,迫使每個(gè)管道在幾毫秒內(nèi)做出反應(yīng)。
Lakehouse 成為 AI 原生:Databricks 的 Lakehouse AI統(tǒng)一了數(shù)據(jù)、ML 和治理,將 SQL、矢量搜索和模型服務(wù)放在同一平臺(tái)上。
隱私監(jiān)管趨嚴(yán):歐盟人工智能法案的最終文本要求合成內(nèi)容生成器具有特殊的透明度,并要求更嚴(yán)格的數(shù)據(jù)治理日志。
一、面向提示的數(shù)據(jù)架構(gòu)設(shè)計(jì)
大型語言模型 (LLM) 的成功秘訣在于,你可以反復(fù)練習(xí)題目,而不是一次性放棄所有要求。一個(gè)行之有效的方法:
1. 基本式提示
為醫(yī)院網(wǎng)絡(luò)創(chuàng)建詳細(xì)的數(shù)據(jù)架構(gòu)設(shè)計(jì),重點(diǎn)關(guān)注 EHR、PACS、LIMS 和安全性。
2.填空式提示
添加 HIPAA 級(jí) RBAC、AES-256 靜態(tài)加密和審計(jì)跟蹤。
3.模型驗(yàn)證提示
你做了哪些假設(shè)?列出缺失的NFR。
您可以嘗試以下更多操作:
二 LLM 生成的倉(cāng)庫(kù)模式
LLM 可以一次性輸出星型或雪花型模式以及 SQL DDL。
輸入:
為銷售、客戶、庫(kù)存、員工和賣家設(shè)計(jì)一個(gè)星型模式。然后生成 DBML 格式的模式,并包含適當(dāng)?shù)?Table {} 塊以及所有外鍵的 Ref 關(guān)系。
輸出:
Table DimCustomer {
customer_id int [pk]
customer_name varchar ( 100 )
customer_email varchar ( 100 )
customer_phone varchar ( 20 )
}
Table DimEmployee {
employee_id int [pk]
employee_name varchar ( 100 )
employee_role varchar ( 50 )
employee_department varchar ( 50 )
}
Table DimSeller {
seller_id int [pk]
seller_name varchar ( 100 )
seller_contact varchar ( 100 )
seller_location varchar ( 100 )
}
Table DimInventory {
inventory_id int [pk]
product_name varchar ( 100 )
product_category varchar ( 50 )
amount_available int
seller_id int
}
Table FactSales {
sale_id int [pk]
sale_date date
sale_amount decimal(12,2)
customer_id int
employee_id int
inventory_id int
}
Ref: DimInventory.seller_id > DimSeller.seller_id
Ref: FactSales.customer_id > DimCustomer.customer_id
Ref: FactSales.employee_id > DimEmployee.employee_id
Ref: FactSales.inventory_id > DimInventory.inventory_id
驗(yàn)證后,將 DDL 粘貼到dbdiagram.io中即可獲得即時(shí) ERD。
最佳實(shí)踐更新:
優(yōu)先使用Iceberg v1.4或Delta Lake 3.0表來獲得 ACID Lakehouse 保證。
用子句標(biāo)記每個(gè)表和列COMMENT——GenAI 可以自動(dòng)生成描述。
三、合成數(shù)據(jù)與增強(qiáng)
合成數(shù)據(jù)既解決了隱私問題,也解決了數(shù)據(jù)稀缺問題。常用的工具包括:
使用 ydata-sdk 的示例:
from ydata_sdk.datasets import load_tabular
from ydata_sdk.synth import CTGAN
data = load_tabular('insurance.csv')
model = CTGAN()
model.fit(data, num_epochs=50)
synthetic = model.generate(n_samples=len(data))
synthetic.to_csv('insurance_synth.csv', index=False)
數(shù)據(jù)匿名化工作
除了合成數(shù)據(jù)之外,你仍然需要直接匿名化。將簡(jiǎn)單的 Python 轉(zhuǎn)換與差異隱私框架相結(jié)合。
導(dǎo)入重新
導(dǎo)入隨機(jī)
導(dǎo)入pandas作為pd
# 示例數(shù)據(jù)
data = [
{ "name" : "Rohit Sharma" , "age" : 36 , "email" : "rohit.sharma@example.com" , "phone" : "9876543210" },
{ "name" : "Anjali Verma" , "age" : 24 , "email" : "anjali.v@example.org" , "phone" : "9123456789" },
{ "name" : "David Johnson" , "age" : 43 , "email" : "david.j@example.net" , "phone" : "9012345678" }
]
# 創(chuàng)建 DataFrame
df = pd.DataFrame(data)
# 幫助器來編輯電子郵件
def redact_email ( email ):
username, domain = email.split( '@' )
return username[: 2 ] + "***@redacted.com"
# 匿名化函數(shù)
def anonymize ( row ):
row[ 'name' ] = re.sub( r'[aeiouAEIOU]' , '*' , row[ 'name' ])
row[ 'age' ] = f" {row[ 'age' ]// 10 } 0s"
row[ 'email' ] = redact_email(row[ 'email' ])
row[ 'phone' ] = row[ 'phone' ][:- 5 ] + str (random.randint( 10000 , 99999 ))
return row
# 應(yīng)用匿名化
df_anonymized = df.apply(anonymize, axis= 1 )
# 顯示前幾行
df_anonymized.head()
對(duì)于更嚴(yán)謹(jǐn)?shù)氖褂?,OpenDP SmartNoise適用于 DP 保證版本。
監(jiān)管提示:根據(jù)歐盟人工智能法案第 50 條,將合成或大量轉(zhuǎn)換的數(shù)據(jù)集標(biāo)記為人工生成的。
四、GenAI輔助基礎(chǔ)設(shè)施規(guī)模調(diào)整
提示模板讓您可以根據(jù)工作負(fù)載導(dǎo)出云架構(gòu)。
輸入:
“建議基礎(chǔ)設(shè)施堆棧每秒傳輸 25 萬個(gè)事件,每年存儲(chǔ) 3 PB 數(shù)據(jù),并提供小于 200 毫秒的分析延遲。
輸出:
? 存儲(chǔ)建議
? 計(jì)算層
? 實(shí)時(shí)引擎
? 成本優(yōu)化建議?!?/span>
GenAI 通常建議:
存儲(chǔ)— 對(duì)象(S3/GCS)+ 開放表格式 Lakehouse
計(jì)算——在 Kubernetes 上自動(dòng)擴(kuò)展 Spark;Flink 2.0用于流
實(shí)時(shí)——Kafka + Flink SQL,由低延遲 OLAP(ClickHouse)支持
成本杠桿——分層存儲(chǔ)、Graviton/ARM 節(jié)點(diǎn)、現(xiàn)貨隊(duì)列
使用云計(jì)算器進(jìn)行驗(yàn)證,然后通過另一個(gè)提示導(dǎo)出 Terraform JSON。示例:
輸入:
根據(jù)下面描述的基礎(chǔ)架構(gòu)堆棧,生成 JSON 格式的 Terraform(*.tf.json)以在 AWS 上配置架構(gòu):
要求:
每秒 250K 個(gè)事件的流提取存儲(chǔ) 3 PB/年的數(shù)據(jù)(對(duì)象存儲(chǔ) + lakehouse 格式)支持 <200ms 分析延遲使用自動(dòng)擴(kuò)展計(jì)算 Kubernetes 上的 Spark使用 Kafka + Flink 2.0 的實(shí)時(shí)引擎使用ClickHouse 進(jìn)行低延遲分析
包括:
S3 存儲(chǔ)設(shè)置MSK(托管 Kafka)集群用于 Spark/Flink 工作負(fù)載的 EKS 集群基于 ClickHouse EC2 的集群IAM 角色、網(wǎng)絡(luò)基礎(chǔ)知識(shí)(VPC、子網(wǎng))
成本優(yōu)化:
分層 S3 存儲(chǔ)、Graviton2 EC2 節(jié)點(diǎn)、現(xiàn)貨車隊(duì)使用情況
輸出:
{
“provider” : {
“aws” : {
“region” : “us-east-1”
}
} ,
“resource” : {
“aws_s3_bucket” : {
“data_lake” : {
“bucket” : “my-event-data-lake” ,
“force_destroy” : true
}
} ,
“aws_msk_cluster” : {
“event_stream” : {
“cluster_name” : “event-stream-msk” ,
“kafka_version” : “3.4.0” ,
“number_of_broker_nodes” : 3 ,
“broker_node_group_info” : {
“instance_type” : “kafka.m5.large” ,
“client_subnets” : [ “subnet-abc123” , “subnet-def456” ] ,
“security_groups” : [ “sg-0123456789abcdef0” ]
}
}
} ,
“aws_eks_cluster” : {
“analytics_cluster” : {
“name” : “spark-flink-cluster” ,
“role_arn” : “arn:aws:iam :: 123456789012:role / eks-cluster-role” ,
“vpc_config” : {
“subnet_ids” : [ “subnet-abc123” , “subnet-def456” ]
}
}
} ,
“aws_eks_node_group” : {
“analytics_nodes” : {
“cluster_name” : “$ {aws_eks_cluster.analytics_cluster.name}” ,
“node_role_arn” : “arn:aws:iam :: 123456789012:role / eks-node-role” ,
“subnet_ids” : [ “subnet-abc123” , “subnet-def456” ] ,
“instance_types” : [ “m6g.large” ] ,
“scaling_config” : {
“desired_size” : 4 ,
“max_size” : 10 ,
“min_size” : 2
} ,
“capacity_type” : “SPOT”
}
} ,
“aws_security_group” : {
"clickhouse_sg" : {
"name" : "clickhouse-security-group" ,
"description" : "允許內(nèi)部訪問 ClickHouse 節(jié)點(diǎn)" ,
"ingress" : [
{
"from_port" : 8123 ,
"to_port" : 8123 ,
"protocol" : "tcp" ,
"cidr_blocks" : [ "10.0.0.0/16" ]
}
] ,
"egress" : [
{
"from_port" : 0 ,
"to_port" : 0 ,
"protocol" : "-1" ,
"cidr_blocks" : [ "0.0.0.0/0" ]
}
] ,
"vpc_id" : "vpc-0123456789abcdef0"
}
} ,
"aws_instance" : {
"clickhouse_node" : {
“ami” : “ami-0abcdef1234567890” ,
“instance_type” : “m6g.large” ,
“count” : 3 ,
“vpc_security_group_ids” : [ “${aws_security_group.clickhouse_sg.id}” ] ,
“subnet_id” : “subnet-abc123” ,
“tags” : {
“名稱” : “clickhouse-analytics-node”
}
}
}
}
}
提示:
您必須將子網(wǎng) ID、VPC ID、AMI和IAM 角色替換為實(shí)際值。
此配置不包括Flink 或 Spark 部署,這些部署將通過 Helm 圖表或 Kubernetes 清單在 EKS 內(nèi)處理(Terraform 可以觸發(fā) Helm)。
根據(jù)需要添加自動(dòng)擴(kuò)展組、數(shù)據(jù)分層策略和監(jiān)控(例如 CloudWatch)。
五、LLMOps — 每個(gè)數(shù)據(jù)工程師必備
大型語言模型操作 (LLMOps) 位于數(shù)據(jù)工程和 MLOps 的交匯處。以下是一些核心最佳實(shí)踐:
六、小結(jié)
為了在不斷發(fā)展的數(shù)據(jù)和人工智能領(lǐng)域保持競(jìng)爭(zhēng)力,掌握架構(gòu)和基礎(chǔ)設(shè)施設(shè)計(jì)的快速工程技術(shù)如今已成為一項(xiàng)基礎(chǔ)技能。采用 Lakehouse 架構(gòu)和開放表格式將簡(jiǎn)化 GenAI 集成并簡(jiǎn)化數(shù)據(jù)工作流程。此外,熟練掌握 Mostly.ai 或 YData 等合成數(shù)據(jù)生成工具以及 SmartNoise 等差異化隱私框架,對(duì)于確保數(shù)據(jù)合規(guī)性至關(guān)重要。雖然使用 GenAI 實(shí)現(xiàn)基礎(chǔ)設(shè)施決策自動(dòng)化可以顯著提高效率,但根據(jù)成本、延遲和安全約束驗(yàn)證這些決策至關(guān)重要。此外,隨著數(shù)據(jù)工程師承擔(dān)起維護(hù)生產(chǎn)環(huán)境中大型語言模型健康的責(zé)任,投資 LLMOps 也變得越來越重要。通過掌握上述技能,您將確保您的數(shù)據(jù)工程技能在 GenAI 持續(xù)重塑整個(gè)技術(shù)棧的背景下依然保持競(jìng)爭(zhēng)力。