معرفی
این سند دستورالعمل برای ایجاد یک TensorFlow تمدید یا TFX خط لوله با استفاده از قالب که با بسته TFX پایتون ارائه کند. بسیاری از دستورالعمل دستورات لینوکس پوسته هستند، و Jupyter سلول های کد نوت بوک که آن دستورات فراخوانی با استفاده از مربوطه !
ارائه شده است.
شما یک خط لوله با استفاده از ساخت تاکسی سفر مجموعه داده های منتشر شده توسط شهر شیکاگو. ما قویاً شما را تشویق میکنیم که با استفاده از این خط لوله بهعنوان خط پایه، با استفاده از مجموعه داده خود، خط لوله خود را بسازید.
ما یک خط لوله با استفاده از ساخت آپاچی پرتو ارکستراسیون . اگر شما در استفاده از Kubeflow رهبر ارکستر در Google Cloud علاقه مند، لطفا TFX در آموزش ابر AI بستر های نرم افزاری خط لوله .
پیش نیازها
- لینوکس / MacOS
- پایتون >= 3.5.3
شما می توانید همه پیش نیازها به راحتی توسط گرفتن در حال اجرا این نوت بوک را در گوگل COLAB .
مرحله 1. محیط خود را تنظیم کنید.
در طول این سند، دو بار دستورات را ارائه خواهیم کرد. یک بار به عنوان یک دستور پوسته آماده کپی و چسباندن، یک بار به عنوان سلول نوت بوک jupyter. اگر از Colab استفاده می کنید، فقط از بلوک اسکریپت پوسته صرفنظر کنید و سلول های نوت بوک را اجرا کنید.
شما باید یک محیط توسعه برای ساخت خط لوله آماده کنید.
نصب tfx
بسته پایتون. ما توصیه می کنیم استفاده از virtualenv
در محیط محلی است. می توانید از قطعه اسکریپت پوسته زیر برای تنظیم محیط خود استفاده کنید.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install -q --user --upgrade tfx==0.23.0
اگر از کولب استفاده می کنید:
import sys
!{sys.executable} -m pip install -q --user --upgrade -q tfx==0.23.0
خطا: some-package 0.some_version.1 دارای نیازمندی other-package!=2.0.,<3,>=1.15 است، اما بسته دیگر 2.0.0 را خواهید داشت که ناسازگار است.
لطفا در این لحظه این خطاها را نادیده بگیرید.
# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin
بیایید نسخه TFX را بررسی کنیم.
python -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
python3 -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
TFX version: 0.23.0
و انجام شد. ما آماده ایجاد یک خط لوله هستیم.
مرحله 2. الگوی از پیش تعریف شده را در فهرست پروژه خود کپی کنید.
در این مرحله، با کپی کردن فایل های اضافی از یک الگوی از پیش تعریف شده، یک فهرست راهنمای پروژه خط لوله و فایل های کار ایجاد می کنیم.
شما نمیتوانید خط لوله خود را به نام های مختلف با تغییر دادن PIPELINE_NAME
زیر کلیک کنید. این همچنین به نام دایرکتوری پروژه تبدیل می شود که فایل های شما در آن قرار می گیرند.
export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",PIPELINE_NAME)
TFX شامل taxi
قالب با بسته TFX پایتون. اگر قصد دارید یک مشکل پیشبینی نقطهای، از جمله طبقهبندی و رگرسیون را حل کنید، این الگو میتواند به عنوان نقطه شروع استفاده شود.
tfx template copy
CLI نسخه فرمان فایل های قالب را به دایرکتوری پروژه خود را از پیش تعریف شده.
tfx template copy \
--pipeline_name="${PIPELINE_NAME}" \
--destination_path="${PROJECT_DIR}" \
--model=taxi
!tfx template copy \
--pipeline_name={PIPELINE_NAME} \
--destination_path={PROJECT_DIR} \
--model=taxi
2020-09-07 09:09:40.131982: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Copying taxi pipeline template Traceback (most recent call last): File "/home/kbuilder/.local/bin/tfx", line 8, in <module> sys.exit(cli_group()) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy template_handler.copy_template(ctx.flags_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 168, in copy_template replace_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 107, in _copy_and_replace_placeholder_dir tf.io.gfile.makedirs(dst) File "/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 480, in recursive_create_dir_v2 _pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path)) tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied
زمینه دایرکتوری کاری در این نوت بوک را به دایرکتوری پروژه تغییر دهید.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
مرحله 3. فایل های منبع کپی شده خود را مرور کنید.
قالب TFX فایلهای داربست اولیه را برای ساخت یک خط لوله، از جمله کد منبع پایتون، دادههای نمونه و نوتبوکهای Jupyter برای تجزیه و تحلیل خروجی خط لوله ارائه میکند. taxi
قالب با استفاده از همان مجموعه داده شیکاگو تاکسی و مدل ML به عنوان جریان هوا آموزش .
در Google Colab، میتوانید با کلیک کردن روی نماد پوشه در سمت چپ، فایلها را مرور کنید. فایل های باید تحت directoy پروژه، که نام است کپی my_pipeline
در این مورد. میتوانید روی نامهای دایرکتوری کلیک کنید تا محتوای دایرکتوری را ببینید و روی نام فایلها برای باز کردن آنها دوبار کلیک کنید.
در اینجا به معرفی مختصر هر یک از فایل های پایتون می پردازیم.
-
pipeline
- این پوشه شامل تعریف از خط لوله-
configs.py
- ثابت مشترک برای دونده خط لوله را تعریف می کند -
pipeline.py
- تعریف اجزای TFX و یک خط لوله
-
-
models
- این پوشه شامل تعاریف مدل ML.-
features.py
،features_test.py
- تعریف ویژگی های برای مدل -
preprocessing.py
،preprocessing_test.py
- تعریف پیش پردازش شغل با استفاده ازtf::Transform
-
estimator
- این پوشه شامل یک مدل بر اساس برآورد.-
constants.py
- تعریف ثابت از مدل -
model.py
،model_test.py
- مدل DNN با استفاده از برآوردگر TF تعریف
-
-
keras
- این پوشه شامل یک مدل مبتنی بر Keras.-
constants.py
- تعریف ثابت از مدل -
model.py
،model_test.py
- مدل DNN با استفاده از Keras تعریف
-
-
-
beam_dag_runner.py
،kubeflow_dag_runner.py
- تعریف دونده برای هر موتور ارکستراسیون
شما ممکن است متوجه شده باشید که برخی از فایل های با _test.py
به نام خود. اینها آزمایشات واحد خط لوله هستند و توصیه می شود همزمان با اجرای خطوط لوله خود، آزمایشات واحد بیشتری را اضافه کنید. شما می توانید تست های واحد تهیه شده توسط نام ماژول از فایل های آزمون با اجرای -m
پرچم. شما معمولا می توانید یک نام ماژول با حذف از .py
گسترش و جایگزین /
با .
. مثلا:
python -m models.features_test
{sys.executable} -m models.features_test
{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models') /tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')
مرحله 4. اولین خط لوله TFX خود را اجرا کنید
شما می توانید با استفاده از یک خط لوله ایجاد pipeline create
فرمان.
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
2020-09-07 09:09:45.612839: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating pipeline Invalid pipeline path: beam_dag_runner.py
سپس شما می توانید این خط لوله ایجاد شده با استفاده اجرا run create
فرمان.
tfx run create --engine=beam --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=beam --pipeline_name={PIPELINE_NAME}
2020-09-07 09:09:50.725339: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
در صورت موفقیت، شما خواهید دید که Component CsvExampleGen is finished.
هنگامی که الگو را کپی می کنید، تنها یک جزء، CsvExampleGen، در خط لوله گنجانده می شود.
مرحله 5. اجزایی را برای اعتبارسنجی داده ها اضافه کنید.
در این مرحله، به شما خواهد اجزای سازنده برای اعتبار سنجی داده ها از جمله اضافه کردن StatisticsGen
، SchemaGen
و ExampleValidator
. اگر شما در اعتبار سنجی داده ها علاقه مند، لطفا به کار با Tensorflow داده ها اعتبار آغاز شده .
ما تعریف خط لوله کپی در تغییر خواهد pipeline/pipeline.py
. اگر روی محیط محلی خود کار می کنید، از ویرایشگر مورد علاقه خود برای ویرایش فایل استفاده کنید. اگر روی Google Colab کار می کنید،
کلیک بر روی آیکون پوشه در سمت چپ به باز
Files
نمایش.
کلیک کنید
my_pipeline
برای باز کردن پوشه و کلیک کنیدpipeline
دایرکتوری به باز و دوبار کلیک کنیدpipeline.py
برای باز کردن فایل.
پیدا کردن و کامنت 3 خط که اضافه کردن
StatisticsGen
،SchemaGen
وExampleValidator
به خط لوله. (نکته: پیدا نظرات حاویTODO(step 5):
).
تغییر شما در عرض چند ثانیه به صورت خودکار ذخیره می شود. اطمینان حاصل کنید که
*
علامت در مقابلpipeline.py
در عنوان زبانه ناپدید شد. هیچ دکمه ذخیره یا میانبری برای ویرایشگر فایل در Colab وجود ندارد. فایل های پایتون در ویرایشگر فایل را می توان به محیط زمان اجرا حتی در نجاتplayground
حالت.
اکنون باید خط لوله موجود را با تعریف خط لوله اصلاح شده به روز کنید. استفاده از tfx pipeline update
دستور برای به روز رسانی خط لوله خود را، پس از tfx run create
دستور برای ایجاد یک اعدام اجرا جدید از خط لوله به روز خود را.
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:09:55.915484: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:01.148250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
شما باید بتوانید گزارش خروجی را از اجزای اضافه شده مشاهده کنید. خط لوله ما مصنوعات خروجی در ایجاد tfx_pipeline_output/my_pipeline
دایرکتوری.
مرحله 6. اجزاء را برای آموزش اضافه کنید.
در این مرحله، شما قطعات برای آموزش و اعتبار مدل از جمله اضافه کردن Transform
، Trainer
، ResolverNode
، Evaluator
و Pusher
.
گسترش
pipeline/pipeline.py
. پیدا کردن و کامنت 5 خط که اضافه کردنTransform
،Trainer
،ResolverNode
،Evaluator
وPusher
به خط لوله. (نکته: برای یافتنTODO(step 6):
)
همانطور که قبلا انجام دادید، اکنون باید خط لوله موجود را با تعریف خط لوله اصلاح شده به روز کنید. دستورالعمل همان مرحله 5. به روز رسانی این خط لوله با استفاده از می tfx pipeline update
، و ایجاد یک اجرا اعدام با استفاده از tfx run create
.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:06.281753: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:11.333668: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
وقتی این اجرا با موفقیت به پایان رسید، اکنون اولین خط لوله TFX خود را با استفاده از Beam Orchestrator ایجاد و اجرا کرده اید!
مرحله 7. (اختیاری) سعی کنید BigQueryExampleGen.
[BigQuery] یک انبار داده ابری بدون سرور، بسیار مقیاس پذیر و مقرون به صرفه است. BigQuery می تواند به عنوان منبعی برای مثال های آموزشی در TFX استفاده شود. در این مرحله، ما اضافه خواهد شد BigQueryExampleGen
به خط لوله.
شما نیاز به یک پلتفرم ابری گوگل حساب برای استفاده از BigQuery مشاهده. لطفا یک پروژه GCP آماده کنید.
ورود به پروژه خود با استفاده از کتابخانه تایید COLAB یا gcloud
ابزار.
# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
print('Authenticated')
برای دسترسی به منابع BigQuery با استفاده از TFX باید نام پروژه GCP خود را مشخص کنید. مجموعه GOOGLE_CLOUD_PROJECT
متغیر محیطی به نام پروژه خود را.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
گسترش
pipeline/pipeline.py
. اظهار نظر ازCsvExampleGen
و کامنت خط که ایجاد یک نمونه ازBigQueryExampleGen
. همچنین به کامنت نیازquery
استدلال ازcreate_pipeline
تابع.
ما نیاز به مشخص کنید که کدام پروژه GCP برای استفاده برای BigQuery مشاهده دوباره، و این است که با تنظیم انجام --project
در beam_pipeline_args
در هنگام ایجاد یک خط لوله است.
گسترش
pipeline/configs.py
. کامنت تعریفBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS
وBIG_QUERY_QUERY
. شما باید شناسه پروژه و مقدار منطقه را در این فایل با مقادیر صحیح پروژه GCP خود جایگزین کنید.
گسترش
beam_dag_runner.py
. دو استدلال کامنت،query
وbeam_pipeline_args
، برای روش های create_pipeline ().
اکنون خط لوله آماده استفاده از BigQuery به عنوان منبع نمونه است. خط لوله را به روز کنید و مانند مراحل 5 و 6 یک اجرا ایجاد کنید.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:16.406635: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:21.439101: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
بعدی: داده های خود را وارد خط لوله کنید.
ما یک خط لوله برای یک مدل با استفاده از مجموعه داده تاکسی شیکاگو ایجاد کردیم. اکنون زمان آن است که داده های خود را در خط لوله قرار دهید.
داده های شما را می توان در هر جایی که خط لوله شما به آن دسترسی داشته باشد ذخیره کرد، از جمله GCS یا BigQuery. برای دسترسی به داده های خود باید تعریف خط لوله را تغییر دهید.
- اگر اطلاعات خود را در فایل های ذخیره شده، تغییر
DATA_PATH
درkubeflow_dag_runner.py
یاbeam_dag_runner.py
و آن را به محل فایل های خود را. اگر اطلاعات خود را در BigQuery مشاهده ذخیره می شود، تغییرBIG_QUERY_QUERY
درpipeline/configs.py
به درستی پرس و جو برای داده های خود را. - اضافه کردن ویژگی های در
models/features.py
. - اصلاح
models/preprocessing.py
به تبدیل داده های ورودی برای آموزش . - اصلاح
models/keras/model.py
وmodels/keras/constants.py
به توصیف مدل ML خود را .- شما می توانید از یک مدل مبتنی بر برآوردگر نیز استفاده کنید. تغییر
RUN_FN
ثابت بهmodels.estimator.model.run_fn
درpipeline/configs.py
.
- شما می توانید از یک مدل مبتنی بر برآوردگر نیز استفاده کنید. تغییر
لطفا برای دیدن راهنمای جزء ترینر برای معرفی بیشتر است.