@@ -48,8 +48,17 @@ DOWNLOADED_PATH=$(
48
48
--model_id " ${HF_MODEL_REPO} " \
49
49
--files " adapter_config.json" " adapter_model.pt" " consolidated.00.pth" " params.json" " tokenizer.model"
50
50
)
51
- EXPORTED_MODEL_NAME=" llama_3_2_1B_lora.pte"
52
- # Export model.
51
+ # Build llama runner.
52
+ cmake_install_executorch_libraries
53
+ cmake_build_llama_runner
54
+
55
+ # Constants.
56
+ RUNTIME_ARGS=" --tokenizer_path=${DOWNLOADED_PATH} /tokenizer.model --temperature=0 --seq_len=20 --warmup=1"
57
+ PROMPT=" What happens if you eat watermelon seeds?"
58
+ EXPECTED_PREFIX=" What happens if you eat watermelon seeds? Watermelon seeds are a good source of vitamin C,"
59
+
60
+ # Export LoRA PTE file.
61
+ MODEL_NAME=" llama_3_2_1B_lora"
53
62
$PYTHON_EXECUTABLE -m extension.llm.export.export_llm \
54
63
base.checkpoint=" ${DOWNLOADED_PATH} /consolidated.00.pth" \
55
64
base.params=" ${DOWNLOADED_PATH} /params.json" \
@@ -61,36 +70,64 @@ $PYTHON_EXECUTABLE -m extension.llm.export.export_llm \
61
70
model.dtype_override=" fp32" \
62
71
backend.xnnpack.enabled=true \
63
72
backend.xnnpack.extended_ops=true \
64
- export.output_name=" ${EXPORTED_MODEL_NAME} "
65
-
66
- # Build llama runner.
67
- cmake_install_executorch_libraries
68
- cmake_build_llama_runner
73
+ export.output_name=" ${MODEL_NAME} .pte"
69
74
70
- PROMPT=" What happens if you eat watermelon seeds?"
71
75
# Run llama runner
72
- RUNTIME_ARGS=" --model_path=${EXPORTED_MODEL_NAME} --tokenizer_path=${DOWNLOADED_PATH} /tokenizer.model --temperature=0 --seq_len=20 --warmup=1"
73
-
74
76
NOW=$( date +" %H:%M:%S" )
75
77
echo " Starting to run llama runner at ${NOW} "
76
78
# shellcheck source=/dev/null
77
- cmake-out/examples/models/llama/llama_main --prompt=" ${PROMPT} " ${RUNTIME_ARGS} > result.txt
79
+ cmake-out/examples/models/llama/llama_main --model_path= ${MODEL_NAME} .pte -- prompt=" ${PROMPT} " ${RUNTIME_ARGS} > result.txt
78
80
NOW=$( date +" %H:%M:%S" )
79
81
echo " Finished at ${NOW} "
80
82
81
83
RESULT=$( cat result.txt)
82
- EXPECTED_PREFIX=" What happens if you eat watermelon seeds? Watermelon seeds are a good source of vitamin C,"
83
-
84
84
if [[ " ${RESULT} " == " ${EXPECTED_PREFIX} " * ]]; then
85
85
echo " Expected result prefix: ${EXPECTED_PREFIX} "
86
86
echo " Actual result: ${RESULT} "
87
+ # Do not clean up files if test passes, as they're re-used in the next test.
87
88
echo " Success"
88
- cleanup_files
89
89
else
90
90
echo " Expected result prefix: ${EXPECTED_PREFIX} "
91
91
echo " Actual result: ${RESULT} "
92
92
echo " Failure; results not the same"
93
+ cleanup_files
94
+ exit 1
95
+ fi
93
96
97
+ # Export LoRA PTE, PTD file.
98
+ MODEL_SEPARATE=" ${MODEL_NAME} _separate"
99
+ $PYTHON_EXECUTABLE -m extension.llm.export.export_llm \
100
+ base.checkpoint=" ${DOWNLOADED_PATH} /consolidated.00.pth" \
101
+ base.params=" ${DOWNLOADED_PATH} /params.json" \
102
+ base.adapter_checkpoint=" ${DOWNLOADED_PATH} /adapter_model.pt" \
103
+ base.adapter_config=" ${DOWNLOADED_PATH} /adapter_config.json" \
104
+ base.tokenizer_path=" ${DOWNLOADED_PATH} /tokenizer.model" \
105
+ model.use_kv_cache=true \
106
+ model.use_sdpa_with_kv_cache=true \
107
+ model.dtype_override=" fp32" \
108
+ backend.xnnpack.enabled=true \
109
+ backend.xnnpack.extended_ops=true \
110
+ export.output_name=" ${MODEL_SEPARATE} .pte" \
111
+ export.foundation_weights_file=" ${MODEL_SEPARATE} .ptd"
112
+
113
+ # Run llama runner.
114
+ NOW=$( date +" %H:%M:%S" )
115
+ echo " Starting to run llama runner at ${NOW} "
116
+ # shellcheck source=/dev/null
117
+ cmake-out/examples/models/llama/llama_main --model_path=${MODEL_SEPARATE} .pte --data_path=${MODEL_SEPARATE} .ptd --prompt=" ${PROMPT} " ${RUNTIME_ARGS} > result2.txt
118
+ NOW=$( date +" %H:%M:%S" )
119
+ echo " Finished at ${NOW} "
120
+
121
+ RESULT2=$( cat result2.txt)
122
+ if [[ " ${RESULT2} " == " ${EXPECTED_PREFIX} " * ]]; then
123
+ echo " Expected result prefix: ${EXPECTED_PREFIX} "
124
+ echo " Actual result: ${RESULT2} "
125
+ echo " Success"
126
+ cleanup_files
127
+ else
128
+ echo " Expected result prefix: ${EXPECTED_PREFIX} "
129
+ echo " Actual result: ${RESULT2} "
130
+ echo " Failure; results not the same"
94
131
cleanup_files
95
132
exit 1
96
133
fi
0 commit comments