Three deployment paths: Cloudflare Workers, wasmCloud, and native Rust.
Install Wrangler and the WASM target:
npm install -g wrangler
rustup target add wasm32-wasip2wrangler.toml:
name = "my-embedding-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[build]
command = "cargo build --target wasm32-wasip2 --release -p blitz-embedding"
[[rules]]
type = "CompiledWasm"
globs = ["target/wasm32-wasip2/release/*.wasm"]Worker (src/index.ts):
import { batch_embed } from '../target/wasm32-wasip2/release/blitz_embedding.wasm';
export default {
async fetch(request: Request): Promise<Response> {
const { token_ids } = await request.json();
const embeddings = batch_embed(token_ids, 768);
return Response.json({ embeddings });
}
};Deploy:
wrangler deploywash build # builds to wasm32-wasip2 via Cargo.toml target
wash push ghcr.io/teamadapt/blitz-embedding:v0.1.0 ./build/blitz_embedding_s.wasm
wash start actor ghcr.io/teamadapt/blitz-embedding:v0.1.0# Cargo.toml
[dependencies]
wasmtime = "19"
wasmtime-wasi = "19"
blitz-embedding = { git = "https://github.com/TeamADAPT/blitzkernels" }use blitz_embedding::{batch_embed, EmbeddingConfig, EmbeddingTable};
fn main() {
let table = EmbeddingTable::new(32000, 768);
let config = EmbeddingConfig::default();
let token_ids = vec![
vec![101u32, 2054, 2003, 2026, 3793, 102],
vec![101, 7592, 102],
];
let embeddings = batch_embed(&token_ids, &table, &config);
println!("batch size: {}, dim: {}", embeddings.len(), embeddings[0].len());
}git clone https://github.com/TeamADAPT/blitzkernels
cd blitzkernels
rustup target add wasm32-wasip2
cargo build --workspace --target wasm32-wasip2 --release
ls target/wasm32-wasip2/release/*.wasmKernel: $1,500 · Full bundle (8 kernels): $6,500
Contact: hello@teamadapt.dev
Catalog: blitzkernels.pages.dev