using wp_tag_cloud with custom taxonomy

Is the normal behavior of wp_tag_cloud: it show all tags, not only the tags for a specific post, even if inserted in a singular page. However, that function has an option include that let you define the tags to include (must be comma separed list of tag ids).

So, in your template file, pass that param to wp_tag_cloud using as value the list of tag ids of current post, that you can retrieve using get_the_terms and wp_list_pluck

global $post;
$terms = get_the_terms( $post->ID, 'project_services' );
$tag_list = implode(',', wp_list_pluck($terms, 'term_id') );
$args = array(
  'taxonomy' => 'project_services',
  'separator' => ', ',
  'include' => $tag_list
);
wp_tag_cloud( $args );

In this way only page related tags will be shown in tag cloud.