Skip to content

Commit fa779a0

Browse files
shoumikhinfacebook-github-bot
authored andcommitted
Misc fixes for the demo app. (#6051)
Summary: . Reviewed By: kirklandsign Differential Revision: D64119638
1 parent 2e64e62 commit fa779a0

File tree

9 files changed

+52
-588
lines changed

9 files changed

+52
-588
lines changed

examples/demo-apps/apple_ios/LLaMA/LLaMA.xcodeproj/project.pbxproj

Lines changed: 0 additions & 460 deletions
Large diffs are not rendered by default.

examples/demo-apps/apple_ios/LLaMA/LLaMA.xcodeproj/xcshareddata/xcschemes/LLaMA.xcscheme

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
</BuildActionEntries>
2424
</BuildAction>
2525
<TestAction
26-
buildConfiguration = "Debug"
26+
buildConfiguration = "Release"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
2929
shouldUseLaunchSchemeArgsEnv = "YES"
3030
shouldAutocreateTestPlan = "YES">
3131
</TestAction>
3232
<LaunchAction
33-
buildConfiguration = "Debug"
33+
buildConfiguration = "Release"
3434
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
3535
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
3636
launchStyle = "0"

examples/demo-apps/apple_ios/LLaMA/LLaMA/Application/ContentView.swift

Lines changed: 44 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ class RunnerHolder: ObservableObject {
1818

1919
extension UIImage {
2020
func resized(to newSize: CGSize) -> UIImage {
21-
let format = UIGraphicsImageRendererFormat.default()
22-
let renderer = UIGraphicsImageRenderer(size: newSize, format: format)
23-
let image = renderer.image { _ in
21+
UIGraphicsImageRenderer(size: newSize).image { _ in
2422
draw(in: CGRect(origin: .zero, size: newSize))
2523
}
26-
return image
2724
}
2825

2926
func toRGBArray() -> [UInt8]? {
@@ -71,10 +68,10 @@ extension UIImage {
7168
let g = UInt8(pixelData[pixelIndex + 1])
7269
let b = UInt8(pixelData[pixelIndex + 2])
7370

74-
let rgbIndex = (y * width + x)
71+
let rgbIndex = (y * width + x) * 3
7572
rgbArray[rgbIndex] = r
76-
rgbArray[rgbIndex + height * width] = g
77-
rgbArray[rgbIndex + 2 * height * width] = b
73+
rgbArray[rgbIndex + 1] = g
74+
rgbArray[rgbIndex + 2] = b
7875
}
7976
}
8077

@@ -207,33 +204,34 @@ struct ContentView: View {
207204
}
208205
}
209206
.navigationBarTitle(title, displayMode: .inline)
210-
.navigationBarItems(leading:
211-
Button(action: {
212-
showingSettings.toggle()
213-
}) {
214-
Image(systemName: "gearshape")
215-
.imageScale(.large)
216-
})
217-
.navigationBarItems(trailing:
218-
HStack {
219-
Menu {
220-
Section(header: Text("Memory")) {
221-
Text("Used: \(resourceMonitor.usedMemory) Mb")
222-
Text("Available: \(resourceMonitor.availableMemory) Mb")
223-
}
224-
} label: {
225-
Text("\(resourceMonitor.usedMemory) Mb")
226-
}
227-
.onAppear {
228-
resourceMonitor.start()
229-
}
230-
.onDisappear {
231-
resourceMonitor.stop()
232-
}
233-
Button(action: { showingLogs = true }) {
234-
Image(systemName: "list.bullet.rectangle")
235-
}
236-
}
207+
.navigationBarItems(
208+
leading:
209+
Button(action: {
210+
showingSettings.toggle()
211+
}) {
212+
Image(systemName: "gearshape")
213+
.imageScale(.large)
214+
},
215+
trailing:
216+
HStack {
217+
Menu {
218+
Section(header: Text("Memory")) {
219+
Text("Used: \(resourceMonitor.usedMemory) Mb")
220+
Text("Available: \(resourceMonitor.usedMemory) Mb")
221+
}
222+
} label: {
223+
Text("\(resourceMonitor.usedMemory) Mb")
224+
}
225+
.onAppear {
226+
resourceMonitor.start()
227+
}
228+
.onDisappear {
229+
resourceMonitor.stop()
230+
}
231+
Button(action: { showingLogs = true }) {
232+
Image(systemName: "list.bullet.rectangle")
233+
}
234+
}
237235
)
238236
.sheet(isPresented: $showingLogs) {
239237
NavigationView {
@@ -274,20 +272,24 @@ struct ContentView: View {
274272
isGenerating = true
275273
shouldStopGenerating = false
276274
shouldStopShowingToken = false
277-
let text = prompt
275+
let text = prompt.trimmingCharacters(in: .whitespacesAndNewlines)
278276
let seq_len = 768 // text: 256, vision: 768
279277
let modelPath = resourceManager.modelPath
280278
let tokenizerPath = resourceManager.tokenizerPath
281-
let useLlama = modelPath.range(of: "llama", options: .caseInsensitive) != nil
279+
let useLlama = modelPath.lowercased().contains("llama")
282280

283281
prompt = ""
284282
hideKeyboard()
285283
showingSettings = false
286284

285+
messages.append(Message(text: text))
286+
messages.append(Message(type: useLlama ? .llamagenerated : .llavagenerated))
287+
287288
runnerQueue.async {
288289
defer {
289290
DispatchQueue.main.async {
290291
isGenerating = false
292+
selectedImage = nil
291293
}
292294
}
293295

@@ -299,10 +301,7 @@ struct ContentView: View {
299301

300302
guard !shouldStopGenerating else { return }
301303
if useLlama {
302-
messages.append(Message(text: text))
303-
messages.append(Message(type: .llamagenerated))
304-
305-
if let runner = runnerHolder.runner, !runner.isloaded() {
304+
if let runner = runnerHolder.runner, !runner.isLoaded() {
306305
var error: Error?
307306
let startLoadTime = Date()
308307
do {
@@ -332,10 +331,7 @@ struct ContentView: View {
332331
}
333332
}
334333
} else {
335-
messages.append(Message(text: text))
336-
messages.append(Message(type: .llavagenerated))
337-
338-
if let runner = runnerHolder.llavaRunner, !runner.isloaded() {
334+
if let runner = runnerHolder.llavaRunner, !runner.isLoaded() {
339335
var error: Error?
340336
let startLoadTime = Date()
341337
do {
@@ -394,7 +390,7 @@ struct ContentView: View {
394390
if token != llava_prompt {
395391
if token == "</s>" {
396392
shouldStopGenerating = true
397-
runnerHolder.runner?.stop()
393+
runnerHolder.llavaRunner?.stop()
398394
} else {
399395
tokens.append(token)
400396
if tokens.count > 2 {
@@ -410,7 +406,7 @@ struct ContentView: View {
410406
}
411407
}
412408
if shouldStopGenerating {
413-
runnerHolder.runner?.stop()
409+
runnerHolder.llavaRunner?.stop()
414410
}
415411
}
416412
}
@@ -421,7 +417,7 @@ struct ContentView: View {
421417
try runnerHolder.runner?.generate(llama3_prompt, sequenceLength: seq_len) { token in
422418

423419
NSLog(">>> token={\(token)}")
424-
if token != llama3_prompt && !shouldStopShowingToken {
420+
if token != llama3_prompt {
425421
// hack to fix the issue that extension/llm/runner/text_token_generator.h
426422
// keeps generating after <|eot_id|>
427423
if token == "<|eot_id|>" {
@@ -485,6 +481,7 @@ struct ContentView: View {
485481
}
486482
runnerQueue.async {
487483
runnerHolder.runner = nil
484+
runnerHolder.llavaRunner = nil
488485
}
489486
switch pickerType {
490487
case .model:

examples/demo-apps/apple_ios/LLaMA/LLaMAPerfBenchmark/LLaMAPerfBenchmark.entitlements

Lines changed: 0 additions & 8 deletions
This file was deleted.

examples/demo-apps/apple_ios/LLaMA/LLaMAPerfBenchmark/LLaMAPerfBenchmarkApp.swift

Lines changed: 0 additions & 16 deletions
This file was deleted.

examples/demo-apps/apple_ios/LLaMA/LLaMAPerfBenchmarkTests/LLaMAPerfBenchmarkTests.swift

Lines changed: 0 additions & 50 deletions
This file was deleted.

examples/demo-apps/apple_ios/LLaMA/LLaMARunner/LLaMARunner/Exported/LLaMARunner.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ NS_SWIFT_NAME(Runner)
1818

1919
- (instancetype)initWithModelPath:(NSString*)filePath
2020
tokenizerPath:(NSString*)tokenizerPath;
21-
- (BOOL)isloaded;
21+
- (BOOL)isLoaded;
2222
- (BOOL)loadWithError:(NSError**)error;
2323
- (BOOL)generate:(NSString*)prompt
2424
sequenceLength:(NSInteger)seq_len
@@ -36,7 +36,7 @@ NS_SWIFT_NAME(LLaVARunner)
3636

3737
- (instancetype)initWithModelPath:(NSString*)filePath
3838
tokenizerPath:(NSString*)tokenizerPath;
39-
- (BOOL)isloaded;
39+
- (BOOL)isLoaded;
4040
- (BOOL)loadWithError:(NSError**)error;
4141
- (BOOL)generate:(void*)imageBuffer
4242
width:(CGFloat)width

examples/demo-apps/apple_ios/LLaMA/LLaMARunner/LLaMARunner/Exported/LLaMARunner.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ - (void)dealloc {
4040
[ExecuTorchLog.sharedLog removeSink:self];
4141
}
4242

43-
- (BOOL)isloaded {
43+
- (BOOL)isLoaded {
4444
return _runner->is_loaded();
4545
}
4646

@@ -128,7 +128,7 @@ - (void)dealloc {
128128
[ExecuTorchLog.sharedLog removeSink:self];
129129
}
130130

131-
- (BOOL)isloaded {
131+
- (BOOL)isLoaded {
132132
return _runner->is_loaded();
133133
}
134134

extension/llm/runner/text_token_generator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,10 @@ class TextTokenGenerator {
7272
// initialize tensor wrappers
7373
auto tokens_managed =
7474
from_blob(token_data.data(), token_shape, exec_aten::ScalarType::Long);
75-
7675
auto start_pos_managed = from_blob(&pos, {1}, exec_aten::ScalarType::Long);
7776

77+
should_stop_ = false;
78+
7879
// Generate our tokens
7980
while (pos < seq_len - 1) {
8081
// Run the model

0 commit comments

Comments
 (0)