dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

jq による JSONL データからのデータ抽出

2024-09-23 23:27:35 | linux

jq による JSONL データからのデータ抽出の例

$ cat test.jsonl
{"abc": "abc", "def": "def"}
{"abc": "ghi", "def", "jkl"}

指定項目を出力

$ cat test.jsonl | jq -c '{abc: .abc}'
{"abc":"abc"}
{"abc":"ghi"}

-c を指定しない場合は以下のような出力となります。

{
  "abc": "abc"
}
{
  "abc": "ghi"
}

Vertex AI のマルチモーダルエンベディング

2024-09-23 23:03:35 | BigQuery

Vertex AI のマルチモーダルエンベディングの実行例のメモ。

画像のエンベディング

概要

  • 外部接続の作成
  • 権限設定
  • Cloud Storage への画像ファイルのアップロード
  • オブジェクトテーブルの作成

外部接続の作成

  • GCP メニューの「BigQuery」を選択。
  • 「+追加」をクリック。
  • 「外部データソースへの接続」を選択。
  • 接続タイプで「Vertex AI リモートモデル」を選択。
  • 「リージョン」:「asia-northeast1」を選択。
  • 「接続を作成」をクリック。

権限設定

外部接続の IAM に対して以下の権限を設定。

  • GCP メニューの「IAM と管理」を選択。
  • 「アクセス件を付与」をクリック。
  • 「新しいプリンシパル」に外部データへの接続で作成したユーザを指定し、以下の権限を設定。
    • Storage オブジェクト管理者
    • BigQuery connection Admin

Cloud Storage への画像ファイルのアップロード

$ gsutil cp *.jpg gs://{バケット}/{パス}/

オブジェクトテーブルを作成

以下を実行。

CREATE OR REPLACE EXTERNAL TABLE
  `{プロジェク}.{データセット}.{テーブル}`
WITH CONNECTION
  `{リージョン}.{接続ID}`
OPTIONS (
  object_metadata = 'SIMPLE',
  uris = ['gs://{バケット}/{パス}/*.jpg']
);

画像のエンベディング

select
  regexp_extract(uri, '/([0-9]+).jpg$') as id
  , ml_generate_embedding_result as image_vecctor
from
  ml.generate_embedding(
    model {データセット}.{テーブル},
    table {データセット}.{オブジェクトテーブル},
    struct(
      true as flatten_json_output,
      512 as output_dimensionality
    )
  )
;

実行中のプロセスをバックグラウンドに移行

2024-09-23 22:19:06 | linux

実行中のプロセスをバックグラウンドで実行する方法のメモ。

いま以下を実行している状態です。

$ cat test.txt | python test.py > result.txt

このまま端末を終了すると、プロセスも終了してしまいます。

そのため、以下でバックグラウンドで実行します。

コマンドを一時停止

ctrl + z でプロセスを一時停止します。

バックグラウンドで再開

$ bg

プロセスをシェルセッションから切り離す

$ disown -h %1

これで端末を終了しても、バックグラウンドでプロセスが実行され続けます。