@@ -9,11 +9,51 @@ set -exu
99# shellcheck source=/dev/null
1010source " $( dirname " ${BASH_SOURCE[0]} " ) /utils.sh"
1111
12- MODEL_NAME=$1 # stories110M
13- BUILD_TOOL=$2 # buck2 or cmake
14- DTYPE=$3 # fp16, bf16, or fp32
15- MODE=${4:- " xnnpack+custom" } # portable or xnnpack+custom or xnnpack+custom+qe
16- UPLOAD_DIR=${5:- }
12+ while [[ $# -gt 0 ]]; do
13+ case " $1 " in
14+ -model)
15+ MODEL_NAME=" $2 " # stories110M
16+ shift 2
17+ ;;
18+ -build_tool)
19+ BUILD_TOOL=" $2 " # buck2 or cmake
20+ shift 2
21+ ;;
22+ -dtype)
23+ DTYPE=" $2 " # fp16, bf16, or fp32
24+ shift 2
25+ ;;
26+ -mode)
27+ MODE=" $2 " # portable or xnnpack+custom or xnnpack+custom+qe
28+ shift 2
29+ ;;
30+ -pt2e_quantize)
31+ PT2E_QUANTIZE=" $2 "
32+ shift 2
33+ ;;
34+ -upload)
35+ UPLOAD_DIR=" $2 "
36+ shift 2
37+ ;;
38+ * )
39+ echo " Unknown option: $1 "
40+ usage
41+ ;;
42+ esac
43+ done
44+
45+ # Default mode to xnnpack+custom if not set
46+ MODE=${MODE:- " xnnpack+custom" }
47+
48+ # Default UPLOAD_DIR to empty string if not set
49+ UPLOAD_DIR=" ${UPLOAD_DIR:- } "
50+
51+ # Default PT2E_QUANTIZE to empty string if not set
52+ PT2E_QUANTIZE=" ${PT2E_QUANTIZE:- } "
53+
54+ # Default CMake Build Type to release mode
55+ CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:- Release}
56+
1757if [[ $# -lt 4 ]]; then # Assuming 4 mandatory args
1858 echo " Expecting atleast 4 positional arguments"
1959 echo " Usage: [...]"
@@ -106,7 +146,7 @@ cmake_install_executorch_libraries() {
106146 rm -rf cmake-out
107147 retry cmake \
108148 -DCMAKE_INSTALL_PREFIX=cmake-out \
109- -DCMAKE_BUILD_TYPE=Debug \
149+ -DCMAKE_BUILD_TYPE=" $CMAKE_BUILD_TYPE " \
110150 -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \
111151 -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \
112152 -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \
@@ -120,22 +160,22 @@ cmake_install_executorch_libraries() {
120160 -DQNN_SDK_ROOT=" $QNN_SDK_ROOT " \
121161 -DPYTHON_EXECUTABLE=" $PYTHON_EXECUTABLE " \
122162 -Bcmake-out .
123- cmake --build cmake-out -j9 --target install --config Debug
163+ cmake --build cmake-out -j9 --target install --config " $CMAKE_BUILD_TYPE "
124164}
125165
126166cmake_build_llama_runner () {
127167 echo " Building llama runner"
128168 dir=" examples/models/llama"
129169 retry cmake \
130170 -DCMAKE_INSTALL_PREFIX=cmake-out \
131- -DCMAKE_BUILD_TYPE=Debug \
171+ -DCMAKE_BUILD_TYPE=" $CMAKE_BUILD_TYPE " \
132172 -DEXECUTORCH_BUILD_KERNELS_CUSTOM=" $CUSTOM " \
133173 -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \
134174 -DEXECUTORCH_BUILD_XNNPACK=" $XNNPACK " \
135175 -DPYTHON_EXECUTABLE=" $PYTHON_EXECUTABLE " \
136176 -Bcmake-out/${dir} \
137177 ${dir}
138- cmake --build cmake-out/${dir} -j9 --config Debug
178+ cmake --build cmake-out/${dir} -j9 --config " $CMAKE_BUILD_TYPE "
139179
140180}
141181
@@ -150,7 +190,7 @@ cleanup_files() {
150190}
151191
152192prepare_artifacts_upload () {
153- if [ -n " $UPLOAD_DIR " ]; then
193+ if [ -n " ${ UPLOAD_DIR} " ]; then
154194 echo " Preparing for uploading generated artifacs"
155195 zip -j model.zip " ${EXPORTED_MODEL_NAME} " tokenizer.bin
156196 mkdir -p " ${UPLOAD_DIR} "
@@ -204,6 +244,10 @@ if [[ "${COREML}" == "ON" ]]; then
204244fi
205245if [[ " ${QNN} " == " ON" ]]; then
206246 EXPORT_ARGS=" ${EXPORT_ARGS} -kv -v --qnn --disable_dynamic_shape"
247+ echo " PT2E_QUANTIZE is ${PT2E_QUANTIZE} "
248+ if [[ " ${PT2E_QUANTIZE} " == " qnn_16a16w" ]]; then
249+ EXPORT_ARGS+=" --tokenizer_path tokenizer.model --pt2e_quantize qnn_16a16w --calibration_tasks wikitext --calibration_limit 1 --calibration_seq_length 128 --calibration_data Once "
250+ fi
207251fi
208252# Add dynamically linked library location
209253$PYTHON_EXECUTABLE -m examples.models.llama.export_llama ${EXPORT_ARGS}
0 commit comments