https://github.com/jlarmstrongiv/tfjs-node-lambda
Loadable @tensorflow/tfjs-node compiled for lambda. Avoid native module errors and package size limits.
https://github.com/jlarmstrongiv/tfjs-node-lambda
lambda nodejs tensorflow
Last synced: 11 months ago
JSON representation
Loadable @tensorflow/tfjs-node compiled for lambda. Avoid native module errors and package size limits.
- Host: GitHub
- URL: https://github.com/jlarmstrongiv/tfjs-node-lambda
- Owner: jlarmstrongiv
- License: mit
- Created: 2020-11-29T13:36:25.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-12-15T14:51:19.000Z (over 2 years ago)
- Last Synced: 2025-07-20T11:51:15.408Z (11 months ago)
- Topics: lambda, nodejs, tensorflow
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/tfjs-node-lambda
- Size: 771 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# tfjs-node-lambda
## Why
It is difficult to run tensorflow in a lambda:
- Size constraints from the lambda environment (<50MB)
- Native code compilation for the lambda environment
This family of packages will handle that heavy lifting for you.
## Versions
See the GitHub [repository](https://github.com/jlarmstrongiv/tfjs-node-lambda/blob/main/matrix.json) for version information. This package will always contain a matrix of the currently supported AWS Lambda Node environments and the `@tensorflow/tfjs-node` latest major versions.
Example matrix:
```json
{
"lambda": ["nodejs10.x", "nodejs12.x", "nodejs14.x"],
"tensorflow": ["1.7.4", "2.8.6", "3.6.1"]
}
```
Example releases:
```
nodejs10.x-tf1.7.4.br
nodejs10.x-tf2.8.6.br
nodejs10.x-tf3.6.1.br
nodejs12.x-tf1.7.4.br
nodejs12.x-tf2.8.6.br
nodejs12.x-tf3.6.1.br
nodejs14.x-tf1.7.4.br
nodejs14.x-tf2.8.6.br
nodejs14.x-tf3.6.1.br
```
Using GitHub actions, these versions are updated daily around midnight. Lock your versions with the `--save-exact` flag.
## Installation
```bash
npm install --save --save-exact tfjs-node-lambda tfjs-node-lambda-helpers
npm install --save-dev --save-exact @tensorflow/tfjs-node @tensorflow/tfjs
```
### Related libraries
- [tfjs-node-lambda](https://www.npmjs.com/package/tfjs-node-lambda)
- [tfjs-node-lambda-helpers](https://www.npmjs.com/package/tfjs-node-lambda-helpers)
- [@tensorflow/tfjs-node](https://www.npmjs.com/package/@tensorflow/tfjs-node)
- [@tensorflow/tfjs](https://www.npmjs.com/package/@tensorflow/tfjs)
## tfjs-node-lambda
```ts
import loadTf from 'tfjs-node-lambda';
const tf: typeof import('@tensorflow/tfjs') = await loadTf(readStream);
```
The [`tfjs-node-lambda-helpers`](https://www.npmjs.com/package/tfjs-node-lambda-helpers) can help determine environments, generate release urls, download releases, and avoid timeouts. If you would prefer to have full control, see the readStream examples below.
#### readStream
In development, `loadTf` will run your locally installed version of `@tensorflow/tfjs-node`. If running in an AWS Lambda environment, `loadTf` expects a readStream of the release:
```ts
import { Readable } from 'stream';
const response = await axios.get(
'https://github.com/jlarmstrongiv/tfjs-node-lambda/releases/download/v2.0.10/nodejs12.x-tf2.8.6.br',
{ responseType: 'arraybuffer' },
);
const readStream = Readable.from(response.data);
```
Or, if you have saved the file to the tmp directory:
```ts
import os from 'os';
import path from 'path';
const readStream = fs.createReadStream(
path.join(os.tmpdir(), 'nodejs12.x-tf2.8.6.br'),
);
```
#### JavaScript
```js
const tf = await loadTf(readStream);
```
#### TypeScript
Due to having multiple supported versions of `@tensorflow/tfjs-node` and an irregular bundle method, you must specify the types:
```ts
const tf: typeof import('@tensorflow/tfjs') = await loadTf(readStream);
```
## Contributing
We welcome contributions!
Inspired by and originally forked from Luc Leray’s [tensorflow-lambda](https://www.npmjs.com/package/tensorflow-lambda).
†[tfjs-node-lambda-releases](https://www.npmjs.com/package/tfjs-node-lambda-releases) is soft deprecated. Due to file size limitations, 6 releases are too big to be published on npm. Use the assets on [GitHub Releases](https://github.com/jlarmstrongiv/tfjs-node-lambda/releases) instead.