AWS Builder Center

Deploying an AI-Powered FIFA World Cup Analytics Platform on AWS: From Data Lake to Production Inference

本教程将指导您部署一个完整的、基于人工智能的 FIFA 世界杯分析平台。您将使用 AWS 服务,例如 Amazon S3、Athena、QuickSight、Bedrock(用于生成式人工智能)和 SageMaker(用于自定义机器学习模型) ,构建一个安全、可扩展的解决方案,用于实时数据采集、统计分析、预测建模和对话式洞察。本教程非常适合体育分析爱好者、数据工程师和机器学习从业者

suolala
主题:
在 AWS 上部署 AI 驱动的 FIFA 世界杯分析平台:从数据湖到生产推理本教程将指导您部署一个完整的、基于人工智能的 FIFA 世界杯分析平台。您将使用 AWS 服务,例如 Amazon S3、Athena、QuickSight、Bedrock(用于生成式人工智能)和 SageMaker(用于自定义机器学习模型)
,构建一个安全、可扩展的解决方案,用于实时数据采集、统计分析、预测建模和对话式洞察。本教程非常适合体育分析爱好者、数据工程师和机器学习从业者。完成本教程后,您将拥有一个可用于生产环境的系统,该系统能够回答有关历史数据的自然语言问题并预测比赛结果。
builder.aws.com
正文(Main Body)1. 架构概述 (Architecture Overview)该平台遵循现代数据+人工智能湖屋模式:数据层:Amazon S3 作为中央数据湖(CSV 文件,如WorldCups.csv和team_statistics.csv)。
查询层:Amazon Athena 用于无服务器 SQL 分析。
可视化:Amazon QuickSight 用于交互式仪表板。
AI 层:Amazon Bedrock 知识库 (RAG) 用于对话式问答 + SageMaker 用于自定义预测模型。
安全性:最小权限 IAM 角色。
部署方式:尽可能采用无服务器架构,以提高成本效益和可扩展性。
主要优势:实时数据摄取
预测分析(例如,比赛胜负预测、球员表现预测)
由 GenAI 提供支持的自然语言界面
  1. 第一步:搭建数据基础和安全保障将数据集上传到 S3:狂欢
aws s3 mb s3://fifa-worldcup-analytics-bucket
aws s3 cp WorldCups.csv s3://fifa-worldcup-analytics-bucket/raw/
aws s3 cp team_statistics.csv s3://fifa-worldcup-analytics-bucket/raw/
创建有作用域的 IAM 角色(对安全至关重要):JSON
// IAM Policy (fifa-data-access-policy.json)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::fifa-worldcup-analytics-bucket",
"arn:aws:s3:::fifa-worldcup-analytics-bucket/raw/*"
]
}
]
}
将此策略附加到 Athena 和 Bedrock 使用的角色。3. 步骤 2:使用 Amazon Athena 查询数据在 Athena 中创建外部表:sql
CREATE EXTERNAL TABLE world_cups (
year INT,
country STRING,
winner STRING,
runners_up STRING,
goals_scored INT,
attendance INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION 's3://fifa-worldcup-analytics-bucket/raw/'
TBLPROPERTIES ("skip.header.line.count"="1");
运行示例分析查询:sql
-- Top goal-scoring tournaments
SELECT year, country, goals_scored
FROM world_cups
ORDER BY goals_scored DESC
LIMIT 5;
  1. 步骤 3:使用 SageMaker 构建预测模型对于自定义机器学习预测(例如,获胜概率),请使用 SageMaker。示例:训练一个简单的随机森林模型(Python SDK)Python
import sagemaker
from sagemaker.sklearn.estimator import SKLearn
import pandas as pd
from sklearn.model_selection import train_test_split

Load and prepare data

df = pd.read_csv('team_statistics.csv')
X = df[['fifa_rank', 'titles', 'win_percentage', 'avg_goals']]
y = df['champion_potential'] # target label
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Upload to S3

train_data = pd.concat([X_train, y_train], axis=1)
train_data.to_csv('train.csv', index=False)
sagemaker_session = sagemaker.Session()
train_s3_uri = sagemaker_session.upload_data('train.csv', bucket='fifa-worldcup-analytics-bucket', key_prefix='train')

Train with SageMaker

sklearn_estimator = SKLearn(
entry_point='train.py',
role='SageMakerExecutionRole',
instance_type='ml.m5.large',
framework_version='1.2-1',
py_version='py3'
)
sklearn_estimator.fit({'train': train_s3_uri})
train.py(入口脚本):Python
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import joblib
import argparse
import os
if name == "main":
parser = argparse.ArgumentParser()
parser.add_argument('--model-dir', type=str, default=os.environ.get('SM_MODEL_DIR'))
args = parser.parse_args()
1
2
3
4
5
6
7
8
train = pd.read_csv('/opt/ml/input/data/train/train.csv')
X = train.drop('champion_potential', axis=1)
y = train['champion_potential']

model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)

joblib.dump(model, os.path.join(args.model_dir, 'model.joblib'))
5. 第四步:部署模型进行推理部署为实时端点:Python
from sagemaker.sklearn.model import SKLearnModel
model = SKLearnModel(
model_data=sklearn_estimator.model_data,
role='SageMakerExecutionRole',
entry_point='inference.py',
framework_version='1.2-1'
)
predictor = model.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium',
endpoint_name='fifa-win-predictor'
)
inference.py:Python
import joblib
import numpy as np
def model_fn(model_dir):
return joblib.load(f"{model_dir}/model.joblib")
def predict_fn(input_data, model):
return model.predict(np.array(input_data).reshape(1, -1)).tolist()
测试一下:Python
payload = [[5, 2, 65.3, 2.1]] # example features
response = predictor.predict(payload)
print("Win Probability:", response)
  1. 第 5 步:使用 Amazon Bedrock 添加对话式 AI使用您的 S3 数据和 Athena 查询结果,在 Bedrock 中创建知识库。然后通过 SDK 进行查询:Python
import boto3
bedrock = boto3.client('bedrock-runtime')
def ask_fifa_analyst(question):
response = bedrock.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1000,
"messages": [{"role": "user", "content": question}]
})
)
return response['body'].read().decode()

Example

print(ask_fifa_analyst("Which team has the best historical profile for 2026 World Cup?"))
  1. 第六步:可视化与生产监控将 Athena 连接到 QuickSight 以创建仪表盘。
    使用 SageMaker 模型监视器进行漂移检测。
    在端点上设置自动扩展和 CloudWatch 警报。
生产环境部署最佳实践:使用蓝绿部署实现零停机更新。
启用加密和私有 VPC 端点。
使用 AWS Budgets 监控成本(Bedrock 按代币付费)。
使用 SageMaker Pipelines 实现 CI/CD 以进行再训练。
这种端到端的部署方案可以将原始足球数据转化为可执行的AI洞察。您还可以通过实时流媒体(Kinesis)或计算机视觉技术来扩展其功能,从而获得比赛精彩集锦。需要完整代码仓库、架构图或特定部分扩展吗?随时告诉我!
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article