Samsung / ONE-vscode

Visual Studio Code Extension of ONE compiler toolchain
Apache License 2.0
48 stars 50 forks source link

Let's Think over UX of ONE-vscode #282

Closed hyunsik-yoon closed 2 years ago

hyunsik-yoon commented 2 years ago

So far ONE-vscode has been developed, focusing on functionality of tools we provide.

It's time to think over UX that embraces user's needs.

hyunsik-yoon commented 2 years ago

How about following designing thinking framework? (https://www.justinmind.com/blog/design-thinking-process-ux-design/) The process is as follows:

I am not sure if we could finish step 4 and and step 5. However, thinking over step 1 to 3 would also be very valuable.

hyunsik-yoon commented 2 years ago

Today, we (@hyunsik-yoon, @jyoungyun, Yunjae Hong) discussed 1. Empathy.

1. Empathy

In this process, user's activities towards compiling model need to be collected. The following is the list of who/what/how/why/issue.

Term

end-user

what/how/why/difficulty

hyunsik-yoon commented 2 years ago

2. Define

Category Problem Note
Installation ONE-vscode and onecc are installed only in Ubuntu device end-user may use different OS
Installation ONE-vscode and onecc are installed separately
Update Upgrading ONE-vscode and onecc is difficult - Upgrade is not automatic and it may cause version mismatch.
- It is questionable if installed ONE-vscode can be used with the latest version of onecc.
target H/W support ONE-vscode cannot be used with real target H/W Installing and configuring required S/W on target device is difficult.
Input model Generation of tflite and ONNX, which are input format of onecc is difficult - end-user may not know what tflite or ONNX is.
- Exporting tflite or ONNX may cause error.
Compile There is no default option for compilation (like $ gcc test.cc) Too many parameters are frustrating at the first trial of compilation.
Compile It is hard to select optimization parameters. optimization parameters are too complicated. Learning all options seems frustrating.
Compile Not sure what quantization is end-users are familiar with f32 models but may not with quantization.
Verify It is hard to check if compiled target code runs really correctly. - There is no tool for value test.
- It is hard to make input data.
- Actual result from target H/W should be value-checked too.
Verify It is hard to check if compiled target code shows good performance. - Not sure how to do performance check.
- Even though performance test was successful, the result is hard to understand.
- With the result, it is hard to pinpoint which line in model source code should be enhanced.
- Performance from target H/W should also be presented.
Verify It is hard to check how much Dram is consumed with the compiled target code. There is no such tool.
Compilation Step Steps in compilation are complex and some steps need to be ran separately in CLI. - There is no way to run whole steps (from compilation to verification) with, e.g., one short-cut key.
- All commands related to circle are not familiar and difficult to understand.
file management It is difficult to manage revision and history of model files, input data, and target code. it is difficult to reproduce a specific target code.
error It is difficult to understand error message. Not sure the meaning of error message related to circle or target code means.
error it is hard to report unsolvable error. - Not sure whom to contact to.
- Posting an open issue in Github might be psychologically difficult to some developers.
- Writing an error report that can be easily reproduced takes long time.
lemmaa commented 2 years ago

https://github.com/Samsung/ONE-vscode/issues/282#issuecomment-1028849954

  • note: Even ourselves cannot guarantee if compiler produces correct target code. End-user also feels that. Therefore value test is a reasonable activity.

To be precise, the compiler will generate (and should generate) correct code. But we cannot guarantee that it will produce correct values. Much of it will be due to quantization error.

hyunsik-yoon commented 2 years ago

3. Ideation

These are the list of items after 3. Ideation.

Note:

  1. This is a tentative list.
  2. Detailed implementation can be made for ONE-vscode, onecc toolchain, or backend compiler. However, here, let's just use the term, ONE-vscode, for simplicity.
hyunsik-yoon commented 2 years ago

Let's prioritize the above items, considering 2022 goal and preference of involved people. Let me close this issue.