Skip to content

Commit 350ebfe

Browse files
committed
LanguageModel: Support p5's preload()
Unsure if calling _{inc,de}crementPreload() manually is the best way to accomplish this. I first tried the p5PreloadHelper from the old repo, but this never made window._preloadCount go above zero for me. (Maybe @ziyuan-linn has some idea?)
1 parent 6f91eda commit 350ebfe

File tree

7 files changed

+29
-20
lines changed

7 files changed

+29
-20
lines changed

examples/LanguageModel/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<script src="../../dist/ml5.js"></script>
99
</head>
1010
<body>
11-
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate" disabled></input><br><br>
11+
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate"></input><br><br>
1212
<script src="sketch.js"></script>
1313
</body>
1414
</html>

examples/LanguageModel/sketch.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ let curWord = 0;
44
let curX = 0;
55
let curY = 20;
66

7+
function preload() {
8+
lm = ml5.languageModel('TinyStories-15M');
9+
}
10+
711
function setup() {
812
createCanvas(400, 400);
913
frameRate(15);
1014
background(0);
11-
12-
lm = ml5.languageModel('TinyStories-15M', onModelLoaded);
15+
select('#generate').mouseClicked(generateText);
1316
}
1417

1518
function draw() {
@@ -29,12 +32,6 @@ function draw() {
2932
}
3033
}
3134

32-
function onModelLoaded() {
33-
console.log('Model loaded');
34-
select('#generate').removeAttribute('disabled');
35-
select('#generate').mouseClicked(generateText);
36-
}
37-
3835
function generateText() {
3936
let prompt = select('#prompt').value();
4037
console.log('Prompt is "' + prompt + '"');

examples/LanguageModelEvents/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<script src="../../dist/ml5.js"></script>
99
</head>
1010
<body>
11-
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate" disabled></input><br><br>
11+
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate"></input><br><br>
1212
<script src="sketch.js"></script>
1313
</body>
1414
</html>

examples/LanguageModelEvents/sketch.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ let curWord = 0;
33
let angle = 0;
44
let radius = 60;
55

6+
function preload() {
7+
lm = ml5.languageModel('TinyStories-15M', onModelLoaded);
8+
}
9+
610
function setup() {
711
createCanvas(400, 400);
812
background(0);
9-
10-
lm = ml5.languageModel('TinyStories-15M', onModelLoaded);
13+
select('#generate').mouseClicked(generateText);
1114
}
1215

1316
function draw() {
@@ -17,8 +20,6 @@ function draw() {
1720

1821
function onModelLoaded() {
1922
console.log('Model loaded');
20-
select('#generate').removeAttribute('disabled');
21-
select('#generate').mouseClicked(generateText);
2223
}
2324

2425
function generateText() {

examples/LanguageModelManual/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<script src="../../dist/ml5.js"></script>
99
</head>
1010
<body>
11-
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate" disabled></input>
11+
<input placeholder="Prompt" id="prompt"></input> <input type="button" value="Generate" id="generate"></input>
1212
<script src="sketch.js"></script>
1313
</body>
1414
</html>

examples/LanguageModelManual/sketch.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
let lm;
22
let numOptions = 40;
33

4-
async function setup() {
5-
noCanvas();
4+
function preload() {
5+
lm = ml5.languageModel('TinyStories-15M', onModelLoaded);
6+
}
67

7-
lm = await ml5.languageModel('TinyStories-15M', onModelLoaded);
8+
function setup() {
9+
noCanvas();
10+
select('#generate').mouseClicked(generateText);
811
}
912

1013
function draw() {
1114
}
1215

1316
function onModelLoaded() {
1417
console.log('Model loaded');
15-
select('#generate').removeAttribute('disabled');
16-
select('#generate').mouseClicked(generateText);
1718
}
1819

1920
function generateText() {

src/LanguageModel/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ class LanguageModel extends EventEmitter {
5353
this.words = [];
5454
this.finished = true;
5555

56+
// for compatibility with p5's preload()
57+
if (typeof window === 'object' && typeof window._incrementPreload === 'function') {
58+
window._incrementPreload();
59+
}
60+
5661
this.ready = callCallback(this.loadModel(), callback);
5762
}
5863

@@ -141,6 +146,11 @@ class LanguageModel extends EventEmitter {
141146
await this.llama2.ccall('register_callback', null, [ 'number' ], [ onTokenCallback ]);
142147

143148
//console.log('loadModel done');
149+
150+
// for compatibility with p5's preload()
151+
if (typeof window === 'object' && typeof window._decrementPreload === 'function') {
152+
window._decrementPreload();
153+
}
144154
}
145155

146156
async generate(prompt, optionsOrCb, cb) {

0 commit comments

Comments
 (0)