En la siguiente sección, se proporciona un ejemplo de ajuste fino de un modelo de BERT para la clasificación de secuencias con la biblioteca de transformadores de Hugging Face con TensorFlow. El conjunto de datos se descarga en un volumen montado con copia de seguridad de Parallelstore, lo que permite que el entrenamiento del modelo lea datos directamente del volumen.
Requisitos previos
- Asegúrate de que tu nodo tenga al menos 8 GiB de memoria disponibles.
- Crea un PersistentVolumeClaim que solicite un volumen respaldado por Parallelstore.
Guarda el siguiente manifiesto YAML (parallelstore-csi-job-example.yaml
) para tu trabajo de entrenamiento de modelos.
apiVersion: batch/v1
kind: Job
metadata:
name: parallelstore-csi-job-example
spec:
template:
metadata:
annotations:
gke-parallelstore/cpu-limit: "0"
gke-parallelstore/memory-limit: "0"
spec:
securityContext:
runAsUser: 1000
runAsGroup: 100
fsGroup: 100
containers:
- name: tensorflow
image: jupyter/tensorflow-notebook@sha256:173f124f638efe870bb2b535e01a76a80a95217e66ed00751058c51c09d6d85d
command: ["bash", "-c"]
args:
- |
pip install transformers datasets
python - <<EOF
from datasets import load_dataset
dataset = load_dataset("glue", "cola", cache_dir='/data')
dataset = dataset["train"]
from transformers import AutoTokenizer
import numpy as np
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
tokenized_data = tokenizer(dataset["sentence"], return_tensors="np", padding=True)
tokenized_data = dict(tokenized_data)
labels = np.array(dataset["label"])
from transformers import TFAutoModelForSequenceClassification
from tensorflow.keras.optimizers import Adam
model = TFAutoModelForSequenceClassification.from_pretrained("bert-base-cased")
model.compile(optimizer=Adam(3e-5))
model.fit(tokenized_data, labels)
EOF
volumeMounts:
- name: parallelstore-volume
mountPath: /data
volumes:
- name: parallelstore-volume
persistentVolumeClaim:
claimName: parallelstore-pvc
restartPolicy: Never
backoffLimit: 1
Aplica el manifiesto YAML al clúster.
kubectl apply -f parallelstore-csi-job-example.yaml
Verifica el progreso de la carga de datos y el entrenamiento del modelo con el siguiente comando:
POD_NAME=$(kubectl get pod | grep 'parallelstore-csi-job-example' | awk '{print $1}')
kubectl logs -f $POD_NAME -c tensorflow