Skip to content

Commit

Permalink
[one-cmds] Add input/output_type options to one-quantize (Samsung#7856)
Browse files Browse the repository at this point in the history
This adds input/output_type options to one-quantize.

ONE-DCO-1.0-Signed-off-by: Hyukjin Jeong <[email protected]>
  • Loading branch information
jinevening authored Oct 20, 2021
1 parent 0a89c90 commit 7f90023
Show file tree
Hide file tree
Showing 6 changed files with 231 additions and 0 deletions.
14 changes: 14 additions & 0 deletions compiler/one-cmds/one-quantize
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,14 @@ def _get_parser():
'--granularity',
type=str,
help='quantize granularity (supported: layer, channel, default=layer)')
quantization_group.add_argument(
'--input_type',
type=str,
help='input data type (supported: uint8, int16, default=quantized_dtype)')
quantization_group.add_argument(
'--output_type',
type=str,
help='output data type (supported: uint8, int16, default=quantized_dtype)')
quantization_group.add_argument(
'--min_percentile', type=str, help='minimum percentile (0.0~100.0, default=1.0)')
quantization_group.add_argument(
Expand Down Expand Up @@ -249,6 +257,12 @@ def _quantize(args):
circle_quantizer_cmd.append(getattr(args, 'quantized_dtype'))
if _utils._is_valid_attr(args, 'granularity'):
circle_quantizer_cmd.append(getattr(args, 'granularity'))
if _utils._is_valid_attr(args, 'input_type'):
circle_quantizer_cmd.append('--input_type')
circle_quantizer_cmd.append(getattr(args, 'input_type'))
if _utils._is_valid_attr(args, 'output_type'):
circle_quantizer_cmd.append('--output_type')
circle_quantizer_cmd.append(getattr(args, 'output_type'))
# input and output path
circle_quantizer_cmd.append(tmp_output_path_2)
if _utils._is_valid_attr(args, 'output_path'):
Expand Down
55 changes: 55 additions & 0 deletions compiler/one-cmds/tests/one-quantize_007.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash

# Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

filename_ext="$(basename -- $0)"
filename="${filename_ext%.*}"

trap_err_onexit()
{
echo "${filename_ext} FAILED"
exit 255
}

trap trap_err_onexit ERR

inputfile="./inception_v3.circle"
outputfile="./inception_v3.random.quantized.q16.iq8.circle"

rm -rf ${outputfile}

# to create inception_v3.circle
if [[ ! -s ${inputfile} ]]; then
/bin/bash one-import_001.test > /dev/null 2>&1
return_code=$?
if [[ ${return_code} != 0 ]]; then
trap_err_onexit
fi
fi

# run test without input data
one-quantize \
--input_dtype float32 \
--quantized_dtype int16 \
--granularity channel \
--input_type uint8 \
--input_path ${inputfile} \
--output_path ${outputfile} > /dev/null 2>&1

if [[ ! -s "${outputfile}" ]]; then
trap_err_onexit
fi

echo "${filename_ext} SUCCESS"
55 changes: 55 additions & 0 deletions compiler/one-cmds/tests/one-quantize_008.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash

# Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

filename_ext="$(basename -- $0)"
filename="${filename_ext%.*}"

trap_err_onexit()
{
echo "${filename_ext} FAILED"
exit 255
}

trap trap_err_onexit ERR

inputfile="./inception_v3.circle"
outputfile="./inception_v3.random.quantized.q16.oq8.circle"

rm -rf ${outputfile}

# to create inception_v3.circle
if [[ ! -s ${inputfile} ]]; then
/bin/bash one-import_001.test > /dev/null 2>&1
return_code=$?
if [[ ${return_code} != 0 ]]; then
trap_err_onexit
fi
fi

# run test without input data
one-quantize \
--input_dtype float32 \
--quantized_dtype int16 \
--granularity channel \
--output_type uint8 \
--input_path ${inputfile} \
--output_path ${outputfile} > /dev/null 2>&1

if [[ ! -s "${outputfile}" ]]; then
trap_err_onexit
fi

echo "${filename_ext} SUCCESS"
50 changes: 50 additions & 0 deletions compiler/one-cmds/tests/one-quantize_neg_019.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash

# Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# negative usage with invalid min_percentile

filename_ext="$(basename -- $0)"
filename="${filename_ext%.*}"

trap_err_onexit()
{
if grep -q "Unsupported input type" "${filename}.log"; then
echo "${filename_ext} SUCCESS"
exit 0
fi

echo "${filename_ext} FAILED"
exit 255
}

trap trap_err_onexit ERR

inputfile="./inception_v3.circle"
outputfile="./inception_v3.quantized.neg_019.circle"

rm -rf ${outputfile}.log

# run test
one-quantize \
--input_dtype float32 \
--quantized_dtype int16 \
--granularity channel \
--input_type float32 \
--input_path ${inputfile} \
--output_path ${outputfile} > ${filename}.log 2>&1

echo "${filename_ext} FAILED"
exit 255
15 changes: 15 additions & 0 deletions compiler/one-cmds/tests/onecc_023.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[onecc]
one-import-tf=False
one-import-tflite=False
one-import-bcq=False
one-optimize=False
one-quantize=True
one-pack=False
one-codegen=False

[one-quantize]
input_path=inception_v3.circle
output_path=inception_v3.onecc_023.q16.iq8.circle
quantized_dtype=int16
granularity=channel
input_type=uint8
42 changes: 42 additions & 0 deletions compiler/one-cmds/tests/onecc_023.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash

# Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# one-import-tf -> one-quantize

filename_ext="$(basename -- $0)"
filename="${filename_ext%.*}"

trap_err_onexit()
{
echo "${filename_ext} FAILED"
exit 255
}

trap trap_err_onexit ERR

configfile="onecc_023.cfg"
outputfile="inception_v3.onecc_023.q16.iq8.circle"

rm -rf ${outputfile}

# run test
onecc -C ${configfile} > /dev/null 2>&1

if [[ ! -s "${outputfile}" ]]; then
trap_err_onexit
fi

echo "${filename_ext} SUCCESS"

0 comments on commit 7f90023

Please sign in to comment.