[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【AWS】1/24(金) Amazon Bedrock が Cohere Embed 3 Multilingual および Embed 3 English のマルチモーダル サポートを提供開始


AWS】2025/1/24(金) Amazon Bedrock が Cohere Embed 3 Multilingual および Embed 3 English のマルチモーダル サポートを提供開始
aws.amazon.com

Cohere Ebed 3とは

さまざまな検索タスクで優れたパフォーマンスを発揮し、多様なデータタイプを処理できるように設計されている。テキストと画像の両方の検索機能をサポートし、100 を超える言語 (Embed 3 Multilingual) でサポート。

東京リージョン含め12リージョンに対応

【AWS】1/23(木) Luma AI の Ray2 ビジュアル AI モデルが Amazon Bedrock で利用可能に


2025/1/23(木) Luma AI の Ray2 ビジュアル AI モデルが Amazon Bedrock で利用可能に
aws.amazon.com
Luma AI の完全マネージド型モデルを提供するのは初らしいです。

Luma Ray2とは

滑らかで自然な動きでリアルなビジュアルを作成できる大規模なビデオ生成モデル。Luma Ray2 を使用すると、シームレスなアニメーション、超リアルなディテール、自然言語プロンプトによる論理的なイベントシーケンスを備えた制作準備が整ったビデオクリップを生成できる。

米国(オレゴン)us-west-2のみです。

ChatGPTにブラウザで動くブロック崩しゲームを作ってもらったら一撃だった


ChatGPTにブラウザで動くブロック崩しゲームを作ってもらったら一撃だった

1.コード作成
1-1.下記でHTMLコードを作成
main.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ブロック崩しゲーム</title>
    <style>
        canvas {
            background: #eee;
            display: block;
            margin: auto;
        }
    </style>
</head>
<body>
    <canvas id="gameCanvas" width="480" height="320"></canvas>
    <script src="game.js"></script>  <!-- 外部スクリプトを読み込む -->
</body>
</html>


1-2.下記でJavaScriptコードを作成
game.js

const canvas = document.getElementById("gameCanvas");
const ctx = canvas.getContext("2d");

// Ball properties
let ballRadius = 10;
let x = canvas.width / 2;
let y = canvas.height - 30;
let dx = 2;
let dy = -2;

// Paddle properties
const paddleHeight = 10;
const paddleWidth = 75;
let paddleX = (canvas.width - paddleWidth) / 2;
let rightPressed = false;
let leftPressed = false;

// Brick properties
const brickRowCount = 5;
const brickColumnCount = 7;
const brickWidth = 75;
const brickHeight = 20;
const brickPadding = 10;
const brickOffsetTop = 30;
const brickOffsetLeft = 30;

let bricks = [];
for (let c = 0; c < brickColumnCount; c++) {
  bricks[c] = [];
  for (let r = 0; r < brickRowCount; r++) {
    bricks[c][r] = { x: 0, y: 0, status: 1 };
  }
}

// Event listeners
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);

function keyDownHandler(e) {
  if (e.key === "Right" || e.key === "ArrowRight") {
    rightPressed = true;
  } else if (e.key === "Left" || e.key === "ArrowLeft") {
    leftPressed = true;
  }
}

function keyUpHandler(e) {
  if (e.key === "Right" || e.key === "ArrowRight") {
    rightPressed = false;
  } else if (e.key === "Left" || e.key === "ArrowLeft") {
    leftPressed = false;
  }
}

function drawBall() {
  ctx.beginPath();
  ctx.arc(x, y, ballRadius, 0, Math.PI * 2);
  ctx.fillStyle = "#0095DD";
  ctx.fill();
  ctx.closePath();
}

function drawPaddle() {
  ctx.beginPath();
  ctx.rect(paddleX, canvas.height - paddleHeight, paddleWidth, paddleHeight);
  ctx.fillStyle = "#0095DD";
  ctx.fill();
  ctx.closePath();
}

function drawBricks() {
  for (let c = 0; c < brickColumnCount; c++) {
    for (let r = 0; r < brickRowCount; r++) {
      if (bricks[c][r].status === 1) {
        let brickX = c * (brickWidth + brickPadding) + brickOffsetLeft;
        let brickY = r * (brickHeight + brickPadding) + brickOffsetTop;
        bricks[c][r].x = brickX;
        bricks[c][r].y = brickY;
        ctx.beginPath();
        ctx.rect(brickX, brickY, brickWidth, brickHeight);
        ctx.fillStyle = "#0095DD";
        ctx.fill();
        ctx.closePath();
      }
    }
  }
}

function collisionDetection() {
  for (let c = 0; c < brickColumnCount; c++) {
    for (let r = 0; r < brickRowCount; r++) {
      let b = bricks[c][r];
      if (b.status === 1) {
        if (
          x > b.x &&
          x < b.x + brickWidth &&
          y > b.y &&
          y < b.y + brickHeight
        ) {
          dy = -dy;
          b.status = 0;
        }
      }
    }
  }
}

function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  drawBricks();
  drawBall();
  drawPaddle();
  collisionDetection();

  if (x + dx > canvas.width - ballRadius || x + dx < ballRadius) {
    dx = -dx;
  }
  if (y + dy < ballRadius) {
    dy = -dy;
  } else if (y + dy > canvas.height - ballRadius) {
    if (x > paddleX && x < paddleX + paddleWidth) {
      dy = -dy;
    } else {
      document.location.reload();
    }
  }

  if (rightPressed && paddleX < canvas.width - paddleWidth) {
    paddleX += 7;
  } else if (leftPressed && paddleX > 0) {
    paddleX -= 7;
  }

  x += dx;
  y += dy;
  requestAnimationFrame(draw);
}

draw();


2.実行
2-1.HTMLファイルをダブルクリックしブラウザで実行

完璧!
※矢印キーで左右の移動が可能



感想

すごいね。ChatGPT。
早く我々の仕事を奪ってくれないかね。

【AWS】SageMaker Clarifyでバイアス分析をしてみた


SageMaker Clarifyバイアス分析をしてみた

SageMaker Clarifyとは

バイアス分析や瀬悦明可能性の評価を実行できる。モデルやデータの透明性を高め、モデルの予測がどのように行われているかを理解するのに役立つSDKツール。

やること

XGBoostでClarifyの結果を確認する。
※XGBoostの推論ができていない場合は下記を7まで実行する。8は終了時に実行する。
amegaeru.hatenablog.jp

実践!

1.Clarifyセットアップ

from sagemaker import Session
from sagemaker.clarify import SageMakerClarifyProcessor

# SageMakerセッションの初期化
sagemaker_session = Session()

# Clarifyプロセッサーの初期化
clarify_processor = SageMakerClarifyProcessor(
    role=role,  # IAMロール
    instance_count=1,  # 使用するインスタンス数
    instance_type="ml.t3.medium",  # インスタンスタイプを変更
    sagemaker_session=sagemaker_session
)

print("SageMakerClarifyProcessor が正常に初期化されました。")



2.データバイアス分析

from sagemaker.clarify import DataConfig, BiasConfig, SageMakerClarifyProcessor

# DataConfig の設定
data_config = DataConfig(
    s3_data_input_path=f"s3://{bucket}/{prefix}/train.csv",  # トレーニングデータのS3パス
    s3_output_path=f"s3://{bucket}/clarify-output",  # Clarifyの出力を保存するS3パス
    label="label",  # ラベル列名
    headers=["label", "sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"],  # カラム名
    dataset_type="text/csv"  # データ形式
)

# BiasConfig の設定
bias_config = BiasConfig(
    label_values_or_threshold=[1],  # ポジティブラベル
    facet_name="sepal length (cm)",  # 分析対象の特徴量
    facet_values_or_threshold=[5.5]  # しきい値を指定
)

# Clarifyプロセッサーの初期化
clarify_processor = SageMakerClarifyProcessor(
    role=role,
    instance_count=1,  # 使用するインスタンス数
    instance_type="ml.t3.medium",  # インスタンスタイプを変更
    sagemaker_session=sagemaker_session
)

# バイアス分析の実行
clarify_processor.run_pre_training_bias(
    data_config=data_config,
    data_bias_config=bias_config,
    methods="all"  # 全ての分析メソッドを使用
)




INFO:sagemaker-clarify-processing:Collected analyses: 配下のJSONを確認する。

{'version': '1.0', 'pre_training_bias_metrics': {'label': 'label', 'facets': {'sepal length (cm)': [
                {'value_or_threshold': '(5.5,
                    7.7
                ]', 'metrics': [
                    {'name': 'CDDL', 'description': 'Conditional Demographic Disparity in Labels (CDDL)', 'value': None, 'error': 'Group variable is empty or not provided'
                    },
                    {'name': 'CI', 'description': 'Class Imbalance (CI)', 'value': -0.16666666666666666
                    },
                    {'name': 'DPL', 'description': 'Difference in Positive Proportions in Labels (DPL)', 'value': -0.20857142857142855
                    },
                    {'name': 'JS', 'description': 'Jensen-Shannon Divergence (JS)', 'value': 0.025149769513246163
                    },
                    {'name': 'KL', 'description': 'Kullback-Liebler Divergence (KL)', 'value': 0.0959978824434343
                    },
                    {'name': 'KS', 'description': 'Kolmogorov-Smirnov Distance (KS)', 'value': 0.20857142857142863
                    },
                    {'name': 'LP', 'description': 'L-p Norm (LP)', 'value': 0.29496454300924557
                    },
                    {'name': 'TVD', 'description': 'Total Variation Distance (TVD)', 'value': 0.20857142857142857
                    }
                ]
            }
        ]
    }, 'label_value_or_threshold': '1'
}
キー 説明 確認ポイント
"pre_training_bias_metrics" 事前バイアス指標(学習前のデータにバイアスがあるか) 各指標(DPL, JS, CI など)の値
"facet" バイアス分析対象の特徴量 sepal length (cm) など
"label" 目的変数(分類対象のラベル) label
"value_or_threshold" バイアスの基準値 5.5 で分けたときの結果
"metrics" 指標の一覧 DPL, JS, KL, TVD など



感想

モデルのバイアス確認がどうやってもできなかった。まだまだだ。。。

【AWS】SageMakerノートブックでワンホットエンコードを実行してみた


SageMakerノートブックでワンホットエンコードを実行してみた

ワンホットエンコードとは

カテゴリデータを機械学習モデルが理解できる数値形式に変換する。
モデルはカテゴリ間の関係性を正確に捉えることができ、モデルの精度向上できる
pythonではpandasとsklearnでできる模様


実践!

1.SageMakerノートブック起動

2.サンプルデータ準備
2-1.下記を実行

# 必要なライブラリをインポート
import pandas as pd
from sklearn.preprocessing import OneHotEncoder

# サンプルデータを作成
data = {'Category': ['A', 'B', 'C', 'A', 'B']}
df = pd.DataFrame(data)
print("元データ:")
print(df)



3.Pandasでワンホットエンコード
3-1.下記を実行

# Pandasでワンホットエンコーディング
df_encoded = pd.get_dummies(df, columns=['Category'])
print("\nPandasでのワンホットエンコード結果:")
print(df_encoded)



4.sklearnでワンホットエンコード
4-1.下記を実行

# Scikit-learnのOneHotEncoderを使用
from sklearn.preprocessing import OneHotEncoder

# Scikit-learnのOneHotEncoderを使用
encoder = OneHotEncoder(sparse_output=False)  # "sparse_output"を使用
encoded = encoder.fit_transform(df[['Category']])

# エンコード結果をデータフレームに変換
df_encoded_sklearn = pd.DataFrame(encoded, columns=encoder.get_feature_names_out(['Category']))
print("\nScikit-learnでのワンホットエンコード結果:")
print(df_encoded_sklearn)




感想

MLの勉強はなんか達成感が出ないね。。。

【AWS】CloudFormationでParametersにNoEchoを設定してみた


CloudFormationでParametersにNoEchoを設定してみた

ParametersのNoEchoとは

スタックのパラメータに機密情報を保存するときに、スタックのイベントログやパラメータの値が出力されるのを防ぐ。

実践!

1.サンプルテンプレート作成

AWSTemplateFormatVersion: "2010-09-09"
Description: "Example template with NoEcho for a simple S3 bucket"

Parameters:
  BucketName:
    Description: "The name of the S3 bucket to create"
    Type: String
    NoEcho: true

Resources:
  MyBucket:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: !Ref BucketName

Outputs:
  CreatedBucketName:
    Description: "The name of the created S3 bucket"
    Value: !Ref MyBucket


2.S3へアップ
任意のバケットにアップ

3.CloudFormationスタック作成
※こんな感じで値にマスクがかかる。



感想

最近キーボードの調子がおかしい、、、買い替えどきか。

【AWS】1/16(木) Amazon EC2 Flexインスタンスに新しい大きなサイズを導入


2025/1/16(木) Amazon EC2 Flexインスタンスに新しい大きなサイズを導入
aws.amazon.com

アップデート内容

Amazon EC2 Flex (C7i-flex、M7i-flex) インスタンスで 2 つの新しい大型サイズ (12xlarge と 16xlarge) の一般提供を開始。追加のメモリを必要とする大規模なアプリケーションを実行したりするための追加のコンピューティング オプションが提供される。これらのインスタンスは、AWS でのみ利用可能なカスタムの第 4 世代 Intel Xeon スケーラブル プロセッサを搭載しており、他のクラウド プロバイダーが使用する同等の x86 ベースの Intel プロセッサよりも最大 15% 優れたパフォーマンスがある。

発見!