t_wの輪郭

Feedlyでフォローするボタン
プログラミング言語golang
あれあれ『Calling AppSync Mutation from Lambda with Golang』あれ『AWS AmplifyでReact(TypeScript)、GraphQL、Lambda(Go)なアプリを作ってみた』Go言語のAmplify functionでGraphQL APIを叩くコード(IAM)あれあれあれAWS AmplifyでGo言語とNext.jsから成るアプリをビルドするアレGo言語でちゃんと日時を変換Go言語で雑に日時を変換-62135596800Go言語のAmplify functionでGraphQL APIを叩くコード(API Key)『AWS Lambda で Go のバイナリを実行すると「/var/task/main: /lib64/libc.so.6: version `GLIBC_2.32' not found」を出力して止まるときにやったこと。』あれHugoあれWindowsでcgoを使う設定GOAMD64『goのエラーをスタックトレースも含めて構造化ログで残したい - エムスリーテックブログ』Cobratempl『goのローカル開発環境でもo11yスタックを活用したい - GammaLab』TinyGo
version: 1
backend:
  phases:
    preBuild:
      commands:
        - wget --no-verbose https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
        - rm -rf /usr/local/go 
        - tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
    build:
      commands:
        - '# Execute Amplify CLI with the helper script'
        - export PATH=$PATH:/usr/local/go/bin
        - go version
        - amplifyPush --simple
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
var ENDPOINT = os.Getenv("API_AMPLIFY_GRAPHQLAPIENDPOINTOUTPUT")
func query(query_string string) string {
	json_string := `{"query":"` + strings.Replace(query_string, "\n", "\\n", 100) + `"}`
	req, err := http.NewRequest(
		"POST",
		ENDPOINT,
		bytes.NewBuffer([]byte(json_string)),
	)
	if err != nil {
		panic(err)
	}

	req.Header.Set("Content-Type", "application/json")

	//Authの設定によっては署名が必要
	config := aws.Config{Region: aws.String("ap-northeast-1")}
	sess := session.Must(session.NewSession(&config))
	signer := v4.NewSigner(sess.Config.Credentials)
	signer.Sign(req, bytes.NewReader([]byte(json_string)), "appsync", "ap-northeast-1", time.Now())

	client := &http.Client{}

	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	return string(body)
}
var ENDPOINT = os.Getenv("API_AMPLIFY_GRAPHQLAPIENDPOINTOUTPUT")
var APIKEY = os.Getenv("API_AMPLIFY_GRAPHQLAPIKEYOUTPUT")
func query(query_string string) string {
	json_string := `{"query":"` + strings.Replace(query_string, "\n", "\\n", 100) + `"}`
	req, err := http.NewRequest(
		"POST",
		ENDPOINT,
		bytes.NewBuffer([]byte(json_string)),
	)
	if err != nil {
		panic(err)
	}

	req.Header.Set("X-Api-Key", APIKEY)
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}

	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	return string(body)
}

MSYS2をインストール
gccをインストール:pacman -S mingw-w64-ucrt-x86_64-gcc
環境変数にC:\msys64\ucrt64\binを追加
CGOを有効化:go env -w CGO_ENABLED=1

あれ

2023/8/13 22:06:00

いや、「ベクトル検索ぐらいマネージドサービスあるやろ」とはなるんだけど、たけーのよ。Azure Cognitive Searchとか、一番安いので月額1万円以上する。

DynamoDBとLambdaでやりくりすれば、維持費をほぼ0円、処理があっても月額100円ぐらいで何とかなるはずなんや。

で、そのために文章をベクトル化(Sentence Embedding)する処理が必要だったのだけどもですね、世のSentence Embeddingするライブラリやら言語モデル(BERTとか)やらはファイルサイズが巨大で、Lambda関数に乗り切らんかったわけです。

そこで、BERTを小型化したALBERTでSentence Embeddingが取れるように学習してたんですけども、やっとこさそれらしい結果が出せるようになってきた。

となると、次の課題はベクトル検索のDB部分なわけです。今はJavaScriptのライブラリを使ってるので速くないので、Go言語とかでやりたい。

というか、JavaScriptでのSentence Embeddingの計算は遅いはずなので、そこもGo言語に切り替えるうまみがあるはず。

あれ

2023/7/29 23:17:00

ONNXならGo言語で動くし、AWS LambdaでSentence Embeddingの計算イケんじゃね???」と思われたが、そもそも日本語のSentence Embeddingに対応した小さいモデルが市井になかった。終わり。

「自分で作れや」というあれがある。GPUがねぇ。いい加減にGoogle Colaboratoryの有償契約をすべきか。

あれ

2023/7/19 21:07:00

Go言語でMacOSのAccelerateを叩いて高速化しようとしてたら業務時間が終わってた。
なおAccelerateで関数自体の高速化はできたものの、全体的には遅くなった。

あれ

2023/7/19 21:07:00

Go言語でAccelerateを叩こうとした副産物でcgoの使い方を完全に理解した

あれ

2023/7/7 20:55:00

Go言語WebGPUしようとしてるマン。

WebGPUをネイティブで動かす、wgpu-nativeという得体の知れないライブラリを使っている。

WebGPUならWindowsでもMacでも動いてお得なので。

そして、それを使って遺伝的プログラミングを動かそうとしている。おそらくWebGPUで遺伝的プログラミングは世界初だろう。ニッチすぎてやる人がいない。

あれ

2023/6/18 15:08:00

Go言語でいい感じのヒートマップ出すのに430行も必要で結構大変だった

あれ

2023/6/18 14:57:00

ボロボロの研究成果です

遺伝的プログラミング、精度出ねぇんだわ。

でも、モデルのサイズは小さいぞ!!
812KBや。
一般的な大規模言語モデルというかディイイイイイプラーニングはGBとかサクッと行く


食事の文章に関してはいい感じに類似判定されているのは、データ元の人格が出てますねぇ。

Hugo

2021/8/11 20:42:00

The world’s fastest framework for building websites

Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.