あれ
Web Prowlerの推薦性能を改善する方法が見えた。
ユーザーのベクトル化であるUser Embeddingを計算して、User EmbeddingとリンクのSentence Embeddingの類似度でクロールすれば良い。
推薦も今見ているページのSentence Embeddingを使って良きようにする。
User Embeddingは操作に応じて随時修正する。
Web Prowlerの推薦性能を改善する方法が見えた。
ユーザーのベクトル化であるUser Embeddingを計算して、User EmbeddingとリンクのSentence Embeddingの類似度でクロールすれば良い。
推薦も今見ているページのSentence Embeddingを使って良きようにする。
User Embeddingは操作に応じて随時修正する。
あばーーーーーーーーーーーーーー
あっ、クソッ、研究のために日経からCypressで記事データブッコぬこうとか思ったらreCAPTCHAで保護してやがるッ!
技術音痴の日経の割にしっかりしてはるな。
会社のMacbookが帯電しすぎて触りたくなくなってきたので、導電マットポチった。
これ→ ホーザン(HOZAN) ESD卓上マット 静電気を大地(アース)へ逃がす F-310-L
とこれ→ ホーザン(HOZAN) アース線 ワニグチクリップ付属 コード実効長:1.6m ホック径:7mmφ F-24
MacbookとIIYAMAのモニターの下に敷く。多分IIYAMAのモニターが悪い。GND繋いでるのに帯電してる気がする。
作業に手をつけるもの30分で力尽きた
いやまじであかんわ。体調不良レベルのやる気の出なさ。
やる気でなさすぎヤバい
35 107387 310942 7
「Multimodal Embeddingとかあるんだ」とか言ってたら、Titan Multimodal Embeddings G1が出てきた。
もう何もせずに寝てればいいじゃん。
なんか頭働かん
画像と文章のEnbeddingが取れるっぽい
export class InMemoryTokenStorage implements Storage {
private storage: { [key: string]: string | null } = {}
get length(): number {
return Object.keys(this.storage).length
}
key(index: number): string | null {
return Object.keys(this.storage)[index]
}
getItem(key: string): string | null {
return this.storage[key]
}
setItem(key: string, value: string): void {
this.storage[key] = value
}
removeItem(key: string): void {
delete this.storage[key]
}
clear(): void {
this.storage = {}
}
}
const token_storage = new InMemoryTokenStorage();
Amplify.configure({
...awsmobile,
Auth: {
storage: token_storage,
}
})
async function idToken_get() {
(await public_user_account_get());
return Object.entries(token_storage.storage).map(([key, value]) => `${key}=${value}`).join("; ");
}
async function public_user_account_get() {
return await (async () => {
try {
return await Auth.currentAuthenticatedUser();
} catch (error) {
try {
return await Auth.signIn(process.env.PUBLIC_EMAIL_ADDRESS ?? "", process.env.PUBLIC_PASSWORD ?? "");
} catch (error) {
return undefined;
}
}
})()
}
const SSR = withSSRContext({ req: { headers: { cookie: await idToken_get() } } });
const result = await SSR.API.graphql({
query: deleteRelation,
variables: {
input: {
id: relation.id,
_version: relation._version,
}
}
})
InMemoryTokenStorageのパクリ元:『Amplifyでアクセストークンをin-memoryに置いてみる』
So, do an:
amplify override api
Update the tablename in the override.ts as:
resources.models["Todo"].modelDDBTable.tableName = "tod";
Amplifyに乗っけたNext.jsから直接DynamoDBたたくの大変っぽい。テーブル名を同定でけへん。
src/middleware.ts
import { NextRequest, NextResponse } from 'next/server'
// IPホワイトリスト
const IP_WHITELIST = ['::1', ...JSON.parse(process.env.IP_WHITELIST ?? "[]")];
const IP_RESTRICT = process.env.IP_RESTRICT === 'true';
export async function middleware(request: NextRequest) {
if (IP_RESTRICT) {
// IPアドレスを取得
let ip: string = request.ip ?? request.headers.get('x-real-ip') ?? '';
// プロキシ経由の場合、x-forwarded-forヘッダーからIPアドレスを取得
const forwardedFor = request.headers.get('x-forwarded-for');
if (!ip && forwardedFor) {
ip = forwardedFor.split(',').at(0) ?? 'Unknown';
}
// 取得したIPアドレスがホワイトリストに含まれているかチェックし、含まれていない場合はアクセス拒否
if (!IP_WHITELIST.includes(ip)) {
return NextResponse.json({ message: 'Unauthorized' }, { status: 401 });
}
}
return NextResponse.next();
}
LambdaでBERTを動かせるようになったんだけども、この知識を200万円ぐらいで売りたい。
誰か買ってくんねーかなぁ……
AI構築を外注すると考えると、安いほうですわよ。
ちなみにAI構築を外注すると、1回の試行で数百万円かかった上でだいたい失敗するらしいぞ♥
https://note.com/maskedanl/n/n35fa7bb528c0
自称AIベンチャーガチャ
金額:50万円~億単位
技術力:宇宙創生
成功率:努力と根性と運次第
頑張って整形するとこんな感じ。
https://dlt.kitetu.com/KNo.D657/7F64#:~:text=ただ,〝-,id属性(%3Dname属性?),-のような
輪結はFirefox以外なら大体対応しています。
https://caniuse.com/url-scroll-to-text-fragment
500MBあるBERTをONNXに変換した後に量子化したら110MBほどになってLambdaで動かせるようになった。
Githubに乗せるファイルは100MB以下でないとだめなので、ダメ押しでgzipで圧縮したら75MBになった。
const onnx_zip = fs.readFileSync('./sonoisa_sentence-bert-base-ja-mean-tokens-v2_onnx/model_quantized.gz');
const onnx_buffer = zlib.unzipSync(onnx_zip)
const session = await ort.InferenceSession.create(onnx_buffer);
sonoisa/sentence-bert-base-ja-mean-tokens-v2で類似度のヒートマップ
python3 -m transformers.onnx --model=sentence-transformers/paraphrase-multilingual-mpnet-base-v2 onnx/ --opset=18
optimum-cli onnxruntime quantize --onnx_model ./onnx --output onnx_quantize/ --arm64
CustomerError: The size of the build output (389192469) exceeds the max allowed size of230686720 bytes. Please reduce the size ofyour build output and try again.
あっ
ちくしょう
Amplify死ね
AWS君さぁ……Lambdaのサイズ制限にしろ、Amplifyのサイズ制限にしろ、厳しすぎやしませんかね……
NVC-Mentorって思考フレームワークのLLM App化で、これってめっちゃおもろい気がする。
お試し用URL: https://knownet.towasys.com/
とかなんとか(うろ覚え)
ちゃんと調べてみた
1 すでに公表されている著作物であること
2 「公正な慣行」に合致すること(例えば,引用を行う「必然性」があることや,言語の
著作物についてはカギ括弧などにより「引用部分」が明確になっていること。)
3 報道,批評,研究などの引用の目的上「正当な範囲内」であること(例えば,引用部
分とそれ以外の部分の「主従関係」が明確であることや,引用される分量が必要最小
限度の範囲内であること)
4 「出所の明示」が必要(複製以外はその慣行があるとき)