This page was translated by the Cloud Translation API.
Switch to English

অ্যাপাচি বিমের সাহায্যে বড় ডেটাসেট তৈরি করা

কিছু ডেটাসেট একক মেশিনে প্রক্রিয়াজাতকরণের জন্য খুব বড়। tfds অ্যাপাচি বিম ব্যবহার করে অনেকগুলি মেশিনে ডেটা জেনারেট করে।

এই দস্তাবেজের দুটি বিভাগ রয়েছে:

  • যে ব্যবহারকারীগণ বিদ্যমান বিম ডেটাসেট তৈরি করতে চান তাদের জন্য
  • বিকাশকারীদের জন্য যারা একটি নতুন বিম ডেটাसेट তৈরি করতে চান

সূচীপত্র:

একটি বিম ডেটাসেট তৈরি করা

নীচে মেঘে বা স্থানীয়ভাবে উভয়ভাবে বিম ডেটাসেট তৈরির বিভিন্ন উদাহরণ রয়েছে are

গুগল ক্লাউড ডেটাফ্লোতে

গুগল ক্লাউড ডেটাফ্লো ব্যবহার করে পাইপলাইন চালনা করতে এবং বিতরণকৃত গণনার সুবিধা নিতে প্রথমে কুইকস্টার্ট নির্দেশাবলী অনুসরণ করুন।

আপনার পরিবেশ স্থাপন করা হলে, আপনি চালাতে পারেন download_and_prepare একটি ডেটা ডিরেক্টরিতে ব্যবহার স্ক্রিপ্ট GCS এবং নির্দিষ্ট প্রয়োজনীয় অপশন জন্য --beam_pipeline_options পতাকা।

স্ক্রিপ্টটি আরম্ভ করা সহজ করার জন্য, আপনার জিসিপি / জিসিএস সেটআপ এবং আপনি যে ডেটাसेट তৈরি করতে চান তার প্রকৃত মানগুলি ব্যবহার করে নিম্নলিখিত ভেরিয়েবলগুলি সংজ্ঞায়িত করতে সহায়ক:

 DATASET_NAME=<dataset-name>
DATASET_CONFIG=<dataset-config>
GCP_PROJECT=my-project-id
GCS_BUCKET=gs://my-gcs-bucket
 

এরপরে কর্মীদের উপর tfds ইনস্টল করতে আপনাকে ডাটাফ্লো বলতে একটি ফাইল তৈরি করতে হবে:

 echo "tensorflow_datasets[$DATASET_NAME]" > /tmp/beam_requirements.txt
 

আপনি যদি tfds-nightly ব্যবহার করছেন তবে শেষ রিলিজের পর থেকে ডেটাসেটটি আপডেট হয়েছে সে ক্ষেত্রে tfds-nightly থেকে প্রতিধ্বনি নিশ্চিত করুন tfds-nightly

 echo "tfds-nightly[$DATASET_NAME]" > /tmp/beam_requirements.txt
 

অবশেষে, আপনি নীচের কমান্ডটি ব্যবহার করে কাজটি চালু করতে পারেন:

 python -m tensorflow_datasets.scripts.download_and_prepare \
  --datasets=$DATASET_NAME/$DATASET_CONFIG \
  --data_dir=$GCS_BUCKET/tensorflow_datasets \
  --beam_pipeline_options=\
"runner=DataflowRunner,project=$GCP_PROJECT,job_name=$DATASET_NAME-gen,"\
"staging_location=$GCS_BUCKET/binaries,temp_location=$GCS_BUCKET/temp,"\
"requirements_file=/tmp/beam_requirements.txt"
 

স্থানীয়ভাবে

আপনার স্ক্রিপ্টটি স্থানীয়ভাবে ডিফল্ট অ্যাপাচি বিম রানার ব্যবহার করে চালানোর জন্য, কমান্ডটি অন্যান্য ডেটাসেটের মতোই:

 python -m tensorflow_datasets.scripts.download_and_prepare \
  --datasets=my_new_dataset
 

একটি কাস্টম স্ক্রিপ্ট সহ

বিমে ডেটাসেট তৈরি করতে, অন্যান্য ডেটাসেটের মতো এপিআই হ'ল, তবে আপনাকে বিম বিকল্পগুলি বা রানার DownloadConfig কাছে পাস করতে হবে।

 # If you are running on Dataflow, Spark,..., you may have to set-up runtime
# flags. Otherwise, you can leave flags empty [].
flags = ['--runner=DataflowRunner', '--project=<project-name>', ...]

# To use Beam, you have to set at least one of `beam_options` or `beam_runner`
dl_config = tfds.download.DownloadConfig(
    beam_options=beam.options.pipeline_options.PipelineOptions(flags=flags)
)

data_dir = 'gs://my-gcs-bucket/tensorflow_datasets'
builder = tfds.builder('wikipedia/20190301.en', data_dir=data_dir)
builder.download_and_prepare(
    download_dir=FLAGS.download_dir,
    download_config=dl_config,
)
 

একটি বিম ডেটাসেট কার্যকর করা হচ্ছে

পূর্বশর্ত

অ্যাপাচি বিম ডেটাসেটগুলি লেখার জন্য, আপনাকে নিম্নলিখিত ধারণাগুলির সাথে পরিচিত হওয়া উচিত:

নির্দেশনা

আপনি যদি ডেটাसेट তৈরির গাইডের সাথে পরিচিত হন তবে মরীচি ডেটাসেট যুক্ত করতে কেবল কয়েকটি সংশোধন প্রয়োজন:

  • তোমার DatasetBuilder থেকে উত্তরাধিকার লাভ করবে tfds.core.BeamBasedBuilder পরিবর্তে tfds.core.GeneratorBasedBuilder
  • বিম ডেটাসেটগুলির _build_pcollection(self, **kwargs) পদ্ধতি _build_pcollection(self, **kwargs) প্রয়োগ করা উচিত _build_pcollection(self, **kwargs) পরিবর্তে _generate_examples(self, **kwargs)_build_pcollection একটি beam.PCollection ফেরত _build_pcollection উচিত beam.PCollection সাথে সম্পর্কিত উদাহরণ সহ সংগ্রহ।
  • আপনার বিম ডেটাসেটের জন্য একক পরীক্ষা লেখা অন্য ডেটাসেটের মতোই with

কিছু অতিরিক্ত বিবেচনা:

  • অ্যাপাচি বিম আমদানি করতে tfds.core.lazy_imports ব্যবহার করুন। অলস নির্ভরতা ব্যবহার করে, ব্যবহারকারীগণ বীম ইনস্টল না করে ডেটাसेट তৈরি করার পরে এখনও পড়তে পারবেন।
  • পাইথন বন্ধ হয়ে সতর্কতা অবলম্বন করুন। পাইপলাইন চালানোর সময়, beam.Map এবং beam.DoFn ফাংশনগুলি pickle ব্যবহার করে সিরিয়ালযুক্ত করা হয় এবং সমস্ত কর্মীদের কাছে প্রেরণ করা হয়। এটি বাগগুলি তৈরি করতে পারে; উদাহরণস্বরূপ, যদি আপনি আপনার ফাংশন একটি চপল বস্তুর ফাংশনের বাইরে ঘোষণা করা হয়েছে ব্যবহার করছেন, আপনি সম্মুখীন হতে পারে pickle ত্রুটি বা অপ্রত্যাশিত আচরণ। ফিক্সটি সাধারণত বন্ধ-ওভার অবজেক্টগুলিকে পরিবর্তন করা এড়াতে।
  • বিম পাইপলাইনে DatasetBuilder পদ্ধতি ব্যবহার করা ভাল। যাইহোক, আচারের সময় শ্রেণিটি যেভাবে সিরিয়াল করা হয়, তৈরির সময় বৈশিষ্ট্যগুলিতে করা পরিবর্তনগুলি সেরা উপেক্ষা করা হবে।

উদাহরণ

এখানে একটি বিম ডেটাসেটের উদাহরণ। আরও জটিল বাস্তব উদাহরণের জন্য, Wikipedia ডেটাসেটটি দেখুন

 class DummyBeamDataset(tfds.core.BeamBasedBuilder):

  VERSION = tfds.core.Version('1.0.0')

  def _info(self):
    return tfds.core.DatasetInfo(
        builder=self,
        features=tfds.features.FeaturesDict({
            'image': tfds.features.Image(shape=(16, 16, 1)),
            'label': tfds.features.ClassLabel(names=['dog', 'cat']),
        }),
    )

  def _split_generators(self, dl_manager):
    ...
    return [
        tfds.core.SplitGenerator(
            name=tfds.Split.TRAIN,
            gen_kwargs=dict(file_dir='path/to/train_data/'),
        ),
        splits_lib.SplitGenerator(
            name=tfds.Split.TEST,
            gen_kwargs=dict(file_dir='path/to/test_data/'),
        ),
    ]

  def _build_pcollection(self, pipeline, file_dir):
    """Generate examples as dicts."""
    beam = tfds.core.lazy_imports.apache_beam

    def _process_example(filename):
      # Use filename as key
      return filename, {
          'image': os.path.join(file_dir, filename),
          'label': filename.split('.')[1],  # Extract label: "0010102.dog.jpeg"
      }

    return (
        pipeline
        | beam.Create(tf.io.gfile.listdir(file_dir))
        | beam.Map(_process_example)
    )

 

আপনার পাইপলাইন চলছে

পাইপলাইন চালনার জন্য উপরের অংশটি দেখুন।

 python -m tensorflow_datasets.scripts.download_and_prepare \
  --register_checksums \
  --datasets=my_new_dataset